我尝试在每个项目上实现具有特定图标,标题和副标题的ListView
。
所有项目的数据都来自ArrayList
后面的class
个对象:
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
需要String[]
items
来获取ListView
个项目的数量。
问题:
是否可以更改ExtendedArrayAdapter
类以直接获得ListView
而不是String[] items
的长度?
并且所有人都需要Array<String>
或List<String>
。所以我不能在这里使用我的ArrayList对象。
答案 0 :(得分:1)
是否可以将ExtendedArrayAdapter类更改为get 直接使用ListView的长度而不是String [] items?
ListView
根据其处理的项目的长度来自Adapter.getCount()
。如果我理解正确的话,你问题的答案就是否定。适配器的定义应该改变,如
class ExtendedArrayAdapter extends ArrayAdapter<ItemObject>{
您必须更改constructor
以及items
的类型