【问题标题】:Android - Populating ArrayList objects in custom layout viewAndroid - 在自定义布局视图中填充 ArrayList 对象
【发布时间】:2016-08-10 18:51:53
【问题描述】:

我很难理解这应该如何工作。我有一个方法 getAllNotes() 在我的 DatabaseHandler 类 中返回 ArrayList,当我尝试像这样循环遍历 ArrayList 时它工作正常: -

    for (Note note : notes) {
        String log = "Id: " + note.getID() + " ,Title: " + note.getTitle() + " ,Description: " + note.getDescription();
        Log.d("Notes: ", log);
    }

这就是方法的样子

DatabaseHandler.java

现在我需要将这些数据填充到列表视图中。经过一些搜索工作,我发现我需要为数组中的每个对象(ID、标题、描述)使用 ArrayAdapter 和带有 textview 的 Custom Layout。 p>

我无法完全理解 ArrayAdapter 应该如何工作。

MainActivity.java

1- 为什么我需要将 setAdapter 定义为 listview 而我已经有了我的 custom listview

2- ArrayAdapter 要求资源 ID 为 TextView,并且我的自定义列表视图布局中有多个文本视图!!

3- 结果看起来很奇怪,我想我会得到一个只有标题的简单列表,但这就是我得到的。

【问题讨论】:

    标签: android listview arraylist android-arrayadapter


    【解决方案1】:

    创建自己的适配器类。

    在 ArraList 中更改你的 modeClass 在 getView() 中更改布局

    快速示例:

    private ArrayList<MenuModel> menuModels;
    private Context context;
    
    public MenuAdapter(ArrayList<MenuModel> menuModels, Context context) {
        this.menuModels = menuModels;
        this.context = context;
    }
    
    @Override
    public int getCount() {
        return menuModels.size();
    }
    
    @Override
    public Object getItem(int position) {
        return menuModels.get(position);
    }
    
    @Override
    public long getItemId(int position) {
        return position;
    }
    
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        MenuModel menuModel = menuModels.get(position);
        ViewHolder viewHolder;
    
        if (convertView == null) {
            LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.item_menu, parent, false);
            viewHolder = new ViewHolder(convertView);
            convertView.setTag(viewHolder);
        } else {
            viewHolder = (ViewHolder) convertView.getTag();
        }
    
        viewHolder.textView.setText(menuModel.getTitle());
        viewHolder.image.setImageResource(menuModel.getResourceIcon());
    
        return convertView;
    }
    
    private static class ViewHolder {
        ImageView image;
        TextView textView;
    
        public ViewHolder(View view) {
            image = (ImageView) view.findViewById(R.id.);
            textView = (TextView) view.findViewById(R.id.menuTitle);
        }
    }
    

    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-28
      相关资源
      最近更新 更多