Ich versuche, ein ListView
mit spezifischen Symbol, Titel und Untertitel für jedes Element zu implementieren.
Die Daten aller Artikel ist in einer ArrayList
von Objekten aus folgenden class
:Benutzerdefiniertes ArrayAdapter ohne benutzerdefiniertes Element Datentyp
class ItemObject{
String title="";
String subTitle="";
String unit="";
int icon;
int quantity;
int parentID;
int orderInList;
}
ArrayList<ItemObject> listViewData;
Hier ist der Code ich zum ersten Mal verwendet:
class ExtendedArrayAdapter<String> extends ArrayAdapter<String>{
private Context context;
private String[] items;
public ExtendedArrayAdapter(Context context, String[] items){
super(context,-1,items);
this.context = context;
this.items=items;
}
@Override
public View getView(int position, View convertView, ViewGroup parent){
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View itemView = inflater.inflate(R.layout.lv_item_bg,parent,false);
TextView itemTitle = (TextView)itemView.findViewById(R.id.itemTitle);
TextView itemSubTitle = (TextView)itemView.findViewById(R.id.itemSubTitle);
ImageView itemIcon = (ImageView)itemView.findViewById(R.id.itemIcon);
itemTitle.setText(listViewData.get(position).title);
itemSubTitle.setText(listViewData.get(position).subTitle);
itemIcon.setBackgroundResource(listViewData.get(position).icon);
return itemView;
}
}
Aber das Problem bezüglich dieser benutzerdefinierten ArrayAdapter ist, dass ExtendedArrayAdapter
Bedürfnisse a String[]
von items
, um die Anzahl der ListView
Artikel zu erhalten.
Frage: Ist es möglich, die ExtendedArrayAdapter
Klasse zu ändern direkt die Länge ListView
statt String[] items
zu bekommen?
EDIT1: In super()
, kann ich nur folgenden Satz von Parametern verwenden:
und alle brauchen Array<String>
oder List<String>
. Also kann ich meine ArrayList von Objekten hier nicht verwenden. statt String [] Artikel
wenn ich entfernen 'String [] Elemente' 'von constructor' ändern müssen, und folglich von' super (context, -1, items); ', ein leerer' ListView' wird – Behy
nicht entfernt angezeigt. Sie müssen es entweder in ItemObject [] oder Liste < ItemObject> – Blackbelt
ändern bitte sehen Sie EDIT1 – Behy