Hi M3doXX,
alles klar
Also ich mach das immer so:
1. Bau ich mir ein listitem.xml, das im Ordner layout liegt, z.B.:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="50dp"
android:background="@drawable/listselector" >
<TextView
android:id="@+id/itemArrow"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:text="@string/listarrow"
android:paddingRight="20dp"
android:textColor="@color/arrowcolor"
android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
android:id="@+id/itemName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/itemArrow"
android:layout_alignBottom="@+id/itemArrow"
android:layout_toLeftOf="@+id/itemArrow"
android:paddingLeft="40dp"
android:textAppearance="?android:attr/textAppearanceMedium" />
</RelativeLayout>
Alles anzeigen
Dann füge ich meiner View eine ListView hinzu, z.B.:
<ListView
android:id="@+id/lstMenu"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_above="@+id/llShortButtons"
android:layout_alignParentLeft="true"
android:layout_below="@+id/imgHeader"
android:divider="@drawable/strichmenu"
android:background="@drawable/background_3"
android:listSelector="@drawable/listselector"
android:paddingTop="5dp" >
</ListView>
Alles anzeigen
In der onCreate der entsprechenden Activity mache ich dann
MenuItemAdapter adapter = new MenuItemAdapter(this, actItem.getItems());
ListView lv = (ListView) findViewById(R.id.lstMenu);
lv.setOnItemClickListener(this);
lv.setAdapter(adapter);
Wobei actItem.getItems() ein ArrayList<MenuItem> zurück gibt. Ein MenuItem ist einfach nur eine dumme Bean die ihren Titel hält.
Das tatsächlich interessante für dich ist jetzt dieser MenuItemAdapter, dem du in deinem Fall noch den entsprechenden Typ mitgibst, z.B. einen boolean isListeA oder so.
Der Adapter schaut dann so aus bei mir:
public class MenuItemAdapter extends BaseAdapter {
private final ArrayList<MenuItem> values;
private final LayoutInflater inflator;
/**
* custom listview adapter to show the item and the state with a good layout
* @param context the actual context
* @param values the values
*/
public MenuItemAdapter(Context context, ArrayList<MenuItem> values) {
this.inflator = LayoutInflater.from(context);
this.values = values;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
// falls nötig, convertView bauen
if (convertView == null) {
// Layoutdatei entfalten
convertView = inflator.inflate(R.layout.listitem, parent, false);
// Holder erzeugen
holder = new ViewHolder((TextView) convertView.findViewById(R.id.itemName));
convertView.setTag(holder);
} else {
// Holder bereits vorhanden
holder = (ViewHolder) convertView.getTag();
}
MenuItem item = (MenuItem) getItem(position);
holder.getName().setText(item.getName());
return convertView;
}
@Override
public int getCount() {
return values.size();
}
@Override
public Object getItem(int position) {
return values.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
private static class ViewHolder {
private TextView name = null;
public ViewHolder(TextView name) {
this.name = name;
}
public TextView getName() {
return this.name;
}
}
}
Alles anzeigen
wobei du im construktor dann noch einen boolean isListeA dabei hast damit du in der getView da wo ich
MenuItem item = (MenuItem) getItem(position);
holder.getName().setText(item.getName());
mache noch bisschen was formatierst. Oder aber du baust dir eben ein zweites listitem.xml und machst dann bei
convertView = inflator.inflate(R.layout.listitem, parent, false);
schon die Unterscheidung. Es ist gut möglich, dass du ähnliche schnipsel beim googeln findest, hab ich zum größten teil selbst mal wo entwendet
So, hab ich dich jetzt noch etwas mehr verwirrt oder konnte ich dir erfolgreich helfen?
Gruß,
matze