【发布时间】:2016-08-05 17:22:06
【问题描述】:
我尝试创建一个自定义适配器,在运行时将项目添加到网格(使用 GridView),以响应用户单击按钮。
添加到网格的每个项目都包含 2 个 TextView 项目和一个 ImageView 项目。存储在每个 TextView 项中的文本由用户在单击按钮之前提供。
我在网上找不到任何如何做到这一点的示例,所以我只查看了具有自定义网格适配器的示例,这些适配器在应用程序启动时初始化了一个网格,例如这个:
唯一的问题是我没有可以预编程的字符串数组,因为这些是由用户在运行时输入确定的,并且添加到网格的每个对象都应该只在单击按钮时出现,否则,屏幕应该是空白的。
我尝试将字符串数组替换为ArrayList,并添加一个可以在单击按钮后调用的方法,该方法将String添加到ArrayList,然后调用notifyDataSetChanged();可悲的是,它似乎不起作用。查看适用代码sn-ps如下:
private List<String> list = new ArrayList<>();
public void addString(String s) {
list.add(s);
this.notifyDataSetChanged();
}
public View getView(int position, View convertView, ViewGroup parent) {
Viewt view;
LayoutInflater inflater = (LayoutInflater) mContext.
getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
convertView = inflater.inflate(R.layout.l, parent, false);
view = new Viewt();
view.tview = (TextView) convertView.findViewById(R.id.textView);
convertView.setTag (view);
} else {
view = (Viewt) convertView.getTag();
}
view.tview.setText(list.get(position));
return convertView;
}
public static class Viewt {
TextView tviewone;
}
【问题讨论】: