动态添加复杂对象到gridview

Dynamically adding complex objects to the gridview

我正在学习自定义适配器,我了解原理:创建列表,填写数据,连接适配器-显示列表。如果列表由字符串组成,我想出了如何添加一个新字符串。 告诉我如何添加一个新项目(一个新图像和一个新字符串),如果我使用 GridView,由带有字符串的图像组成。 在Google中,所有例子要么不加复杂项(只有一个字符串),要么不加动态

更新:我将通过一个例子来解释我需要什么。该代码创建了一个项目列表,或者只是将项目放置在布局中,然后在 运行 程序中,用户单击其中一个对象 - 在 activity 的另一部分中,一个具有相同对象的对象创建内容(最好是在创建前可以编辑的内容)。还是我错了,需要使用布局中的结构?有很多代码很难在视觉上看到,并且与gridview、listview

相比性能有所下降

你在这里要实现的是一个listfragment,希望能帮到你:

1: 创建一个包含您的列表项的 list_item.xml 文件(例如,ImageView 和一个 TextView),这将表示 list/grid

中的单个项目

2: 创建一个代表您的项目的模型 class

class Image{
   Bitmap imageBitmap;
   String title;
}

3: 将模型作为列表传递给适配器

4:在适配器中,在getView()方法中:

  • list_item.xml
  • 充气
  • findViewById() 对于您在 list_item.xml 中的每个视图 像这样:
    (TextView) View.findViewById(android.R.id.textView)) .setText(getItem(position);
  • getItem(position) 部分将使用您传递给模型的列表中的数据填充视图

适配器的最终外观如下:

public class MyAdapter extends BaseAdapter {
    List<Image> images =new ArrayList<>();
    Context c;

    //constructor
    public MyAdapter(List<Image> images, Context c) {
        this.images.addAll(images);
        this.c = c;
    }


    @Override
    public Object getItem(int i) {
        return images.get(i);
    }

    @Override
      public View getView(int position, View convertView, ViewGroup container) {
          if (convertView == null) {
              convertView = getLayoutInflater().inflate(R.layout.list_item, container, false);
          }

          ((TextView) convertView.findViewById(android.R.id.textView))
                  .setText(getItem(position).getTitle());

          ((ImageView) convertView.findViewById(android.R.id.imageView))
                  .setImageBitmap(getItem(position).getImageBitmap());

          return convertView;
      }

}