今天在看代码的时候发现一个问题。关于gridView点击其中的item选项而改变这个选项的背景的问题。这里我把我的想法写出来,希望对大家有所帮助。
在我们点击每个Item的时候,记录它的是由position来实现的。在adapter中我们把这个position当作一个已知的值来赋值给一个变量a,在getView中通过判断值a与参数position是否相等来改变convertView的背景色。这样就能简单的实现点击相应每个点击的效果。
在需要adapter的类中,我们可以通过adapter的实例来控制其中设置变量值a的方法来实现对点击所在位置的值的监听。然后通过notifyDataSetChanged()来刷新。
如果上面的都做了以后就基本实现了简单的item点击变换背景的效果了。
在adapter中标识变量:
public void setClick(int position){
a = position;
}
在getView中设置监听:
.....
//
在需要adapter的类中:
........
//其他代码
//设置适配器
........
//其他代码
在getView中设置监听:
public View getView(int position, View convertView, ViewGroupparent) {
.....//
// 点击改变选中Item的背景色
if (
a == position) {
convertView.setBackgroundResource(
int值);
} else {
convertView.setBackgroundColor(
值);
}}
}
在需要adapter的类中:
//initView初始化UI时,GridView监听事件
designOrderGridView.setOnItemClickListener(newOnItemClickListener() {
@Override
public voidonItemClick(
AdapterView<?> parent, View view, int position,long id
) {
adapter.setClick(position);
adapter.notifyDataSetChanged();
}
});
对上面的代码的一些小解释:
OrderGridView.setOnItemClickListener(newOnItemClickListener() {
@Override
public voidonItemClick(AdapterView<?> parent, View view, int position,
long id )
各项的意义:
parent
是点击的当前适配器
long id )