【发布时间】:2015-07-07 09:23:59
【问题描述】:
我有一个使用 ImageView 元素的自定义适配器的 GridView。我想更改 ImageView onItemClick 并且我有一些点击条件。如果单击的项目可用,我会更改图像。但是当我更改项目的图像资源时,我必须通过 adapter.notifyDataSetChanged(); 更新整个 GridView。我的 GridView 有 100 个元素,所以更新它们都会花费我半秒的延迟,这很令人不安。如何只更新我已更改的元素?
这是我在适配器中的 getView() 方法。
public View getView(final int position, View convertView, ViewGroup parent) {
Point point;
View v = null;
point=items.get(position);
int resId;
resId=point.getBackground();
v = inflater.inflate(R.layout.item, null);
ImageView tv = (ImageView) v.findViewById(R.id.image_button);
tv.setImageResource(resId);
return v;
}
这是我在 Point 对象上的 getBackground() 方法
public int getBackground(){
int backId=(R.drawable.button_initial);
if(isFilled){
backId=(R.drawable.button_clicked);
}
else if(isAvailable){
backId=(R.drawable.button_green);
}
return backId;
}
提前致谢。
【问题讨论】:
-
顺便说一句:
ackId=(R.drawable.button_clicked)括号是干什么用的? -
坏习惯。我对所有我不知道为什么的东西都使用括号
标签: android gridview imageview custom-adapter