【问题标题】:Populate a custom list view with two textviews and a checkbox [closed]使用两个文本视图和一个复选框填充自定义列表视图 [关闭]
【发布时间】:2012-11-30 20:47:36
【问题描述】:

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

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

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

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

【问题讨论】:

  • 看看examples api

标签: android android-listview custom-adapter


【解决方案1】:

BaseAdpater 所做的只是巩固 AbsListView 所需的回调。 ArrayAdater 是一个更全面的适配器,它可以将项目列表自动膨胀到 TextViews 中。

针对您的情况,我建议扩展 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;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-11
    • 1970-01-01
    • 1970-01-01
    • 2015-10-16
    • 1970-01-01
    相关资源
    最近更新 更多