我有一个 GridView,我希望始终显示 7 个图标,有时根据请求显示一个附加图标。一开始,附加图标从未显示。这是结构:
0 1 2
3 4 5
6 [7]
所有图标都适合屏幕,所以我不需要/有滚动。每个图标由一个图像和一个文本组成。
为此,我有一个扩展 BaseAdapter 的 CustomAdapter。我已经覆盖了 getView 方法,在该方法中我为每个图标设置了文本和图像。
public View getView(int position, View convertView, ViewGroup parent) {
View v = null;
if (convertView == null) {
LayoutInflater li = ((Activity) context).getLayoutInflater();
v = li.inflate(R.layout.icon, null);
} else {
v = convertView;
}
TextView tv = (TextView) v.findViewById(R.id.icon_textView);
tv.setText(position);
ImageView iv = (ImageView) v.findViewById(R.id.icon_ImageView);
iv.setImageResource(imageResourcesArray[position]);
if ((position == ADDITIONAL_ICON)) && !showAdditionalIcon) {
v.setVisibility(View.INVISIBLE);
}
return v;
}
imageResourcesArray[]
是具有图像资源的整数数组。CustomAdapter 中的其他函数和变量是:
public static final int ADDITIONAL_ICON = 7;
private boolean showAdditionalIcon = false;
public showAdditionalIcon(){
this.showAdditionalIcon = true;
notifyDataSetChanged();
// notifyDataSetInvalidated();
}
public hideAdditionalIcon(){
this.showAdditionalIcon = false;
notifyDataSetChanged();
// notifyDataSetInvalidated();
}
稍后,我从扩展 Activity 的类(例如)创建 CustomAdapter 并将其设置为 GridView ClassA
:
GridView grid = (GridView) findViewById(R.id.main_gridView);
customAdapter = new CustomAdapter(this);
grid.setAdapter(customAdapter);
在对服务器进行一些计算和请求后,我的问题出现了,我必须显示附加图标(数字 7)。所以我打电话(来自ClassA
):
customAdapter.showAdditionalIcon();
现在,出现了附加图标,但第一个图标消失了......我尝试使用notifyDataSetInvalidated()
,notifyDataSetChanged()
但两者都有相同的结果。
当然,我可以生成一个CustomAdapter
允许附加图标的新图标,但我不希望这样做......
提前致谢。