您的位置:首页 > 移动开发 > Android开发

Android:GridView中实现点击Item变色,再点击还原。

2017-03-02 19:02 405 查看
使用GridView时想实现点击其中的一个Item,该Item改变背景,再次点击Item变回原来的背景,网上搜了很多资料都没有看到类似的案例,但还是有所启发,现来分享我的做法。

首先,首先为GridView自定义adapter适配器,继承BaseAdapter类。

实现效果的重要因素如下,为item设置一个标记点击状态的数组。

public class gridAdapter extends BaseAdapter {

final itemLength = 16;
private LayoutInflater layoutInflater;
private List<String> gridDataList = new ArrayList<>();
private int clickTemp = -1;//标识被选择的item
private int[] clickedList=new int[itemLength];//这个数组用来存放item的点击状态
private  Context c;

gridAdapter(Context context){
c = context;
layoutInflater = LayoutInflater.from(context);
for (int i =0;i<itemLength;i++){
clickedList[i]=0;      //初始化item点击状态的数组
}
}

----------
以下代码省略
----------

}

然后在定义的adapter中写一个方法,用于识别当前被选择的item

public void setSeclection(int posiTion) {
clickTemp = posiTion;
}

在setOnItemClickListener中.将点击的Item位置通过setSeclection( )传到adapter。

gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
gridadapter.setSeclection(position);
gridadapter.notifyDataSetChanged();
}
});


接下来adapter中很重要的重载方法getView()。

@Override
public View getView(int position, View convertView, ViewGroup parent) {

//..................代码省略

if(clickTemp==position){    //根据点击的Item当前状态设置背景
if (clickedList[position]==0){
convertView.setBackgroundColor(Color.BLUE);
clickedList[position]=1;
}
else {              convertView.setBackgroundColor(Color.TRANSPARENT);
clickedList[position]=0;
}
}

//..................代码省略

}

提醒:不要忘了notifyDataSetChanged(),否则点击效果不会显示。
在修改适配器绑定的数据后,利用notifyDataSetChanged()刷新Item。

上一篇android:代码中动态添加子布局

下一篇ScrollView与GridView滚动发生冲突
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐