2016-03-23 4 views
1

Я пытаюсь реализовать ListView с конкретными значками, заголовками и субтитрами для каждого элемента.
Данные всех элементов находится в ArrayList объектов из следующих class:Пользовательский ArrayAdapter без настраиваемого элемента данных типа

class ItemObject{ 
    String title=""; 
    String subTitle=""; 
    String unit=""; 
    int icon; 
    int quantity; 
    int parentID; 
    int orderInList; 
} 

ArrayList<ItemObject> listViewData; 

Вот код, который я использовал первый:

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; 
    } 
} 

Но проблема относительно этого пользовательского ArrayAdapter является то, что ExtendedArrayAdapter потребности a String[] от items, чтобы получить номер ListView элементов.

Вопрос: Можно ли изменить ExtendedArrayAdapter класс, чтобы получить непосредственно длину ListView вместо String[] items?

EDIT1: В super(), я могу использовать только следующий набор параметров: enter image description here

и все должны Array<String> или List<String>. Поэтому я не могу использовать ArrayList объектов здесь.

ответ

1

Можно ли изменить класс ExtendedArrayAdapter получить непосредственно длину ListView вместо String [] элементов?

длина ListView с точки зрения пункта его обработки, дается от Adapter.getCount(). Ответ на ваш вопрос, если я его правильно понимаю, тогда нет. Определение вашего адаптера должно измениться, как

class ExtendedArrayAdapter extends ArrayAdapter<ItemObject>{ 

вам придется изменить constructor и тип items а

+0

, если удалить 'String []' 'деталей из constructor', и, следовательно, от' super (context, -1, items); ', пустой' ListView' отображается – Behy

+0

не удаляется. Вы должны изменить его либо в ItemObject [], либо в списке < ItemObject> – Blackbelt

+0

. Обратите внимание на EDIT1 Behy

Смежные вопросы