Im letzten Teil des Tutorials wurde das SettingsFragment designed und auch schon teilweise implementiert, der Rest der Implementierung wird jedoch in diesem Tutorial übernommen. Dabei steht heute unter anderem das Füllen der Liste im Vordergrund.
Das Video zum Tutorial
Damit die Liste mit Werten gefüllt werden kann, wird ein sogenannter Adapter benötigt, der jetzt implementiert wird. Dazu wird die Klasse "SettingsAdapter erstellt". Füge den folgenden Code in die Klasse "SettingsFragment" ein:public class SettingsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{
int lastPosition = -1;
@Override
public int getItemCount(){
return settingItems.size();
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int i){
if(holder instanceof SettingViewHolder){
final SettingItem si = settingItems.get(i);
SettingViewHolder settingViewHolder = (SettingViewHolder) holder;
settingViewHolder.name.setText(si.getName());
if(!si.getValue().equals("")){
settingViewHolder.value.setText(Html.fromHtml(si.getValue()));
}
else settingViewHolder.value.setText("");
settingViewHolder.icon.setImageResource(Icons.getSystemInfoIcon(si.getType()));
View.OnClickListener ocl = si.getOnClickListener();
if(ocl != null){
settingViewHolder.container.setOnClickListener(ocl);
}
setAnimation(((SettingViewHolder) holder).container, i);
}
}
public void setAnimation(View viewToAnimate, int position){
if(position > lastPosition){
Animation animation = AnimationUtils.loadAnimation(getContext(), R.anim.recycler_animation);
viewToAnimate.startAnimation(animation);
lastPosition = position;
}
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType){
View itemView = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.value_item, viewGroup, false);
return new SettingViewHolder(itemView);
}
public class SettingViewHolder extends RecyclerView.ViewHolder{
protected TextView value, name;
protected ImageView icon;
protected View container;
public SettingViewHolder(View v){
super(v);
container = v.findViewById(R.id.container);
value = (TextView) v.findViewById(R.id.value);
name = (TextView) v.findViewById(R.id.name);
icon = (ImageView) v.findViewById(R.id.icon);
}
}
}
/**
* Gibt anhand des übergebenene Key's den passenden Icon zurück
* @param key
* @return
*/
public static int getSystemInfoIcon(String key){
switch(key){
default:
return R.mipmap.ic_launcher;
}
}
/**
* Gibt anhand des übergebenen Key's den passenden Icon zurück
* @param key
* @return
*/
public static int getValueIcon(String key){
switch(key){
default:
return R.mipmap.ic_launcher;
}
}
/**
* Gibt anhand des übergebenen Key's den passenden Icon zurück
* @param key
* @return
*/
public static int getDeviceIcon(String key){
switch(key){
default:
return R.mipmap.ic_launcher;
}
}
android:layout_height="match_parent"
android:layout_height="wrap_content"
Die App auf dem Emulator testen
Um den Emulator zu starten klickst du in der Leiste oben auf den großen grünen Pfeil. Daraufhin öffnet sich eine Übersicht mit allen angelegten virtuellen Geräten. Falls du noch keins angelegt hast, wählst du unten "Create new virtual device". Hier kannst du dir nun ein Modell aussuchen. Eine Betriebssystemversion kannst du dir nach einem Klick auf "Next" aussuchen. Nach einem weiteren Klick auf "Next" kannst du das Gerät genauer definieren (ist nicht unbedingt nötig) und die Erstellung mit einem Klick auf "Finish" abschließen. Nach kurzer Ladezeit sollte der Emulator starten und nach einem mehr oder weniger schnellen Startvorgang solltest du einen Android Homescreen sehen, auf dem nach ein paar Augenblicken die Smarthome App startet. Hier kannst du nun im Hauptmenü den Punkt "Einstellungen" anklicken und der Einstellungs-Bildschirm sollte in etwa so aussehen, wie auf dem folgenden Bild. Bei Fragen oder Problemen kannst du mir gerne einen Kommentar hinterlassen.Dieser Beitrag hat dir gefallen?
Dann abonniere doch unseren Newsletter!