我正在学习自定义适配器,我理解原理:创建列表,填写数据,连接适配器 - 列表显示。我想出如果列表由字符串组成,如何添加新字符串。 如果我使用GridView,包括带有字符串的图像,请告诉我如何添加新项目(新图像和新字符串)。 在Google中,所有示例都要么不添加复杂项目(只有一个字符串),要么不添加动态
upd:我将通过一个例子解释我需要什么。代码创建项目列表或简单地将项目放置在布局中,然后在运行程序中用户单击其中一个对象 - 在活动的另一部分中,创建具有相同内容的对象(最好是内容为可以在创建之前编辑)。或者我错了,需要使用布局中的结构?与gridview,listview相比,代码很多在视觉上很难,并且降低了性能
答案 0 :(得分:2)
你想在这里实现的是一个listfragment,我希望我能在这里提供帮助:
1:创建包含您的列表项的ImageView
文件(例如,TextView
和class Image{
Bitmap imageBitmap;
String title;
}
),这将代表单个项目列表/网格
2:创建一个代表您的项目的Model类
getView()
3:将模型作为列表传递给适配器
适配器中的 4:,采用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;
}
}
部分将使用您传递给模型适配器的最终外观如下所示:
a_sum = tf.reduce_sum(all_outputs, 2)
mask = tf.cast(tf.greater(a_sum, tf.zeros_like(a_sum)), tf.float32)