Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 我可以用我自己的类的列表填充listview吗?_Android - Fatal编程技术网

Android 我可以用我自己的类的列表填充listview吗?

Android 我可以用我自己的类的列表填充listview吗?,android,Android,我想用我自己元素的链接列表填充列表视图 我的班级是这样的: public class Foo { public String text; } CustomAdapter customAdapter = new CustomAdapter(context, getList()); listView.setAdapter(customAdapter); 这是我的适配器和列表: String[] fromColumns = {"X"}; int[] toViews = {android.R

我想用我自己元素的
链接列表
填充
列表视图

我的班级是这样的:

public class Foo {
    public String text;
}
CustomAdapter customAdapter = new CustomAdapter(context, getList());
listView.setAdapter(customAdapter);
这是我的适配器和列表:

String[] fromColumns = {"X"};
int[] toViews = {android.R.id.text1};
mAdapter = new SimpleCursorAdapter(this, 
        android.R.layout.simple_list_item_1, null,
        fromColumns, toViews, 0);
list = (ListView)findViewById(R.id.list);
list.setAdapter(mAdapter);
我还有一个
链接列表元素我要在列表中显示的内容

现在的问题是:如何解决这个问题

  • 我不知道要在
    from columns
    中写入什么来匹配我的
    文本
  • 我不知道如何将我的
    元素
    列表绑定到列表,以便显示它

  • 您需要为此创建自定义适配器

    比如:

    公共类AdapterCategoryList扩展了BaseAdapter{
    私人语境;
    私人ArrayList类别名称;
    公共AdapterCategoryList(上下文,ArrayList categoryNames){
    this.context=上下文;
    this.categoryNames=categoryNames;
    }
    @凌驾
    public int getCount(){
    返回categoryNames.size();
    }
    @凌驾
    公共对象getItem(int位置){
    返回categoryNames.get(位置);
    }
    @凌驾
    公共长getItemId(int位置){
    返回位置;
    }
    @凌驾
    公共视图getView(int位置、视图转换视图、视图组父视图){
    持有人;
    if(convertView==null){
    convertView=View.inflate(上下文,R.layout.listitem\u类别\u列表,空);
    保持架=新保持架();
    holder.mTxtCategoryImage=(TextView)convertView.findViewById(R.id.txtCategoryListItem);
    convertView.setTag(支架);
    }否则{
    holder=(holder)convertView.getTag();
    }        
    holder.mTxtCategoryImage.setBackgroundResource(categoryNames.get(position.getCategoryImage());
    返回视图;
    }
    阶级持有者{
    文本视图mTxtCategoryImage;
    }
    }
    
    创建自定义适配器。您可以扩展
    BaseAdapter
    ArrayAdapter
    ArrayAdapter
    是一个泛型类,因此它适用于本例

    一种可能的实施方式:

    public class CustomAdapter extends ArrayAdapter<Item> {
    
        public CustomAdapter(Context context, List<Item> items) {
            super(context, 0, items);
        }
    
        public View getView(int position, View convertView, ViewGroup parent) {
            ViewHolder holder;
            if (convertView == null) {
                convertView = View.inflate(getContext(), R.layout.some_layout, null);
                holder = new ViewHolder();
                holder.textView = (TextView) convertView.findViewById(R.id.textView);
                convertView.setTag(holder);
            } else {
                holder = (ViewHolder) convertView.getTag();
            }
            holder.textView.setText(getItem(position).getText());
            return convertView;
        }
    
        private class ViewHolder {
            TextView textView;
        }
    }
    

    我编辑了你的答案。ArrayAdapter已经有了一个列表和上下文,因此您可以(也应该)使用它们。此外,如果在适配器中使用自定义列表而不是使用ArrayAdapter列表,则
    add
    的默认实现将不起作用。此外,我还使用了
    View.flate
    ,这样您就不必将layoutine实例化为flater,代码也就变平了clearer@santirivera92哦,你说得对。只是从一个旧项目复制粘贴了一些代码,而没有真正注意。谢谢
    CustomAdapter customAdapter = new CustomAdapter(context, getList());
    listView.setAdapter(customAdapter);