自定义ArrayAdapter没有自定义项数据类型

时间:2016-03-23 13:10:19

标签: android listview android-arrayadapter

我尝试在每个项目上实现具有特定图标,标题和副标题的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的长度?

EDIT1:super()中,我只能使用以下参数集: enter image description here

并且所有人都需要Array<String>List<String>。所以我不能在这里使用我的ArrayList对象。

1 个答案:

答案 0 :(得分:1)

  

是否可以将ExtendedArrayAdapter类更改为get   直接使用ListView的长度而不是String [] items?

ListView根据其处理的项目的长度来自Adapter.getCount()。如果我理解正确的话,你问题的答案就是否定。适配器的定义应该改变,如

class ExtendedArrayAdapter extends ArrayAdapter<ItemObject>{

您必须更改constructor以及items的类型