动态地将复杂对象添加到gridview

时间:2018-05-15 15:38:26

标签: android arrays gridview add dynamically-generated

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

upd:我将通过一个例子解释我需要什么。代码创建项目列表或简单地将项目放置在布局中,然后在运行程序中用户单击其中一个对象 - 在活动的另一部分中,创建具有相同内容的对象(最好是内容为可以在创建之前编辑)。或者我错了,需要使用布局中的结构?与gridview,listview相比,代码很多在视觉上很难,并且降低了性能

1 个答案:

答案 0 :(得分:2)

你想在这里实现的是一个listfragment,我希望我能在这里提供帮助:

1:创建包含您的列表项的ImageView文件(例如,TextViewclass Image{ Bitmap imageBitmap; String title; } ),这将代表单个项目列表/网格

2:创建一个代表您的项目的Model类

getView()

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

适配器中的

4:,采用list_item.xml方法:

  • 夸大findViewById()
  • {li> 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; } } 部分将使用您传递给模型
  • 的列表中的数据填充视图

适配器的最终外观如下所示:

a_sum = tf.reduce_sum(all_outputs, 2)

mask = tf.cast(tf.greater(a_sum, tf.zeros_like(a_sum)), tf.float32)