-2

我已经创建了main.xml并且list.xml 我的 java 类扩展了menuActivity 我有 2 个向量——

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

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

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

4

1 回答 1

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;
    }
}
于 2012-11-30T21:16:24.400 回答