2016-03-23 17 views
1

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: enter image description here

und alle brauchen Array<String> oder List<String>. Also kann ich meine ArrayList von Objekten hier nicht verwenden. statt String [] Artikel

Antwort

1

Ist es möglich, die ExtendedArrayAdapter Klasse zu ändern direkt die Länge des Listview zu bekommen?

die Länge der ListView in Bezug auf Artikel ist es Handhabung von Adapter.getCount() gegeben. Die Antwort auf deine Frage, wenn ich sie richtig verstehe, ist dann nein. Die Definition des Adapters sollte wie ändern

class ExtendedArrayAdapter extends ArrayAdapter<ItemObject>{ 

Sie die constructor und die Art des items auch

+0

wenn ich entfernen 'String [] Elemente' 'von constructor' ändern müssen, und folglich von' super (context, -1, items); ', ein leerer' ListView' wird – Behy

+0

nicht entfernt angezeigt. Sie müssen es entweder in ItemObject [] oder Liste < ItemObject> – Blackbelt

+0

ändern bitte sehen Sie EDIT1 Behy

Verwandte Themen