使用两个textview和一个复选框填充自定义列表视图

时间:2012-11-30 20:47:36

标签: android android-listview custom-adapter

我创建了main.xmllist.xml 我的java类扩展menuActivity 我有2个向量 -

 Vector<String> name=new Vector<String>();
   Vector<String> nickname=new Vector<String>();

我也创建了custom holder class。 我的问题是如何将这两个列表传递给我的适配器类。 我应该使用哪个适配器?

我尝试将这两个向量放在另一个列表中并将该列表发送到我的自定义adpater类。但它没有成功。 我被困在这里。 baseadpater和数组适配器有什么区别?

1 个答案:

答案 0 :(得分:1)

所有BaseAdpater都会固化AbsListView所需的回调。 ArrayAdater是一个更全面的适配器,可以自动将项目列表扩展为TextView。

根据您的情况,我建议扩展BaseAdapter:

class MyAdapter extends BaseAdapter {
    Vector<String> names;
    Vector<String> nicks;

    public MyAdapter(Vector<String> nms, Vector<String> nks) {
        if (nms.size() != nks.size())
            throw new RuntimeException("oops! Wrong sizes for vectors");
        name = nms;
        nicks = nks;
    }

    @Override
    public int getCount() {
        return names.getSize() &&  nicks.getSize();
    }

    @Override
    public String getItem() {
        // Can't really implement with two vectors.
        return null;
    }

    @Override
    public getView(int pos, View convert, ViewGroup mommy) {
        LinearLayout ll = (LinearLayout)convert;

        if (ll == null)
            // Inflate the linear layout - preferrably from resources

        ViewHolder vh = (ViewHolder)ll.getTag();

        if (vh == null)
            // Inflate ViewHolder

        vh.tvname.setText(names.get(pos));
        vh.tvnick.setText(nicks.get(pos));
        return ll;
    }

    class ViewHolder {
        TextView tvname, tvnick;
    }
}