android gridview 选择变色 再点击还原 并支持多选。记录贴 01
2017-12-20 16:57
501 查看
在网上看了很多方法 大多用 修改背景样式啊 发现并不是很适合我的项目先放一张效果图 ://核心判断代码
public void chiceState(int post) { //首次更新adapter不做修改 p=true; //点击过后判断是 第一次点击还是多次点击 isChice[post]=isChice[post]==true?false:true; //更改 adapter this.notifyDataSetChanged(); }activity 代码 :gridview 点击事件:
ArrayList array = new ArrayList();//记录点击的数
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {// Toast.makeText(getActivity(),""+position// ,Toast.LENGTH_LONG).show();if (array != null) {// 判断 集合是否为空if (array.size() == 10) { // 项目上限是只能选择10个if (array.contains(pfl.get(position).getPvalue())) {// 判断集合里是否存在当前点击值gridadapter.chiceState(position); // 启用回调函数array.remove(pfl.get(position).getPvalue());// 如果存在移除} else {Toast.makeText(getActivity(), "最多选择10个 ",Toast.LENGTH_LONG).show();}} else {if (array.size() < 10) {gridadapter.chiceState(position);if (!array.contains(pfl.get(position).getPvalue())) {array.add(pfl.get(position).getPvalue());// 如果不存在 添加} else {array.remove(pfl.get(position).getPvalue());// 如果存在移除}} else {// 第一次点击 直接记录gridadapter.chiceState(position);array.add(pfl.get(position).getPvalue());}}}}});核心 adapter :
public class ProductAdapter extends BaseAdapter {private Activity context2;boolean p=false;private boolean isChice[];private List<Pfl> pfls;public ProductAdapter(Activity context ,List<Pfl> pfl ) {context2 = context;this.pfls =pfl;isChice=new boolean[pfl.size()]; //初始布尔型数组for (int i = 0; i < pfl.size(); i++) {isChice[i]=false; //设置成未点击状态}}@Overridepublic int getCount() {return pfls.size();}@Overridepublic Object getItem(int position) {return pfls.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View view, ViewGroup viewGroup) {final ViewHolder holder;if (view == null) {view = LayoutInflater.from(context2).inflate(R.layout.gridv_item, null);holder = new ViewHolder();holder.but = (Button) view.findViewById(R.id.button_set);view.setTag(holder);} else {holder = (ViewHolder) view.getTag();}holder.but.setText(pfls.get(position).getPname());//传入按钮 跟 标识getView(position , holder.but);return view;}static final class ViewHolder {Button but;}//回调方法public void chiceState(int post) { //首次更新adapter不做修改 p=true; //点击过后判断是 第一次点击还是多次点击 isChice[post]=isChice[post]==true?false:true; //更改 adapter this.notifyDataSetChanged(); }//修改 but的背景以及颜色private void getView(int post ,Button but) {if (!p){but.setTextColor(Color.parseColor("#333333"));but.setBackgroundResource(R.drawable.weixuanze);}else{if (isChice[post]== true){but.setTextColor(Color.parseColor("#01aaee"));but.setBackgroundResource(R.drawable.xuanzhong);}else{but.setTextColor(Color.parseColor("#333333"));but.setBackgroundResource(R.drawable.weixuanze);}}}}问题群:191974931 不明白的地方可以直接问 。
相关文章推荐
- [原创]扩展GridView实现多选(全选)、点击行任意位置选择行、选中变色、添加双击事件等
- 扩展GridView实现多选(全选)、点击行任意位置选择行、选中变色、添加双击事件等
- 扩展GridView实现多选(全选)、点击行任意位置选择行、选中变色、添加双击事件等
- Android:GridView中实现点击Item变色,再点击还原。
- Android:GridView中实现点击Item变色,再点击还原。
- 扩展GridView实现多选(全选)、点击行任意位置选择行、选中变色、添加双击事件等
- Android 点击ListView(或GridView)的一个item,使其里面textview变色,点击另一个这个恢复原来颜色
- Extjs 中实现combox多选,已经解决了原有的bug 【选择多条记录后,鼠标点击其他空白处,选择的数据丢失,】
- Android使用GridView异步加载(弱引用)网络图片(支持点击查看)
- android GridView条目点击变色
- Android开发之小知识记录-----gridview\listview选择固定位置无效解决方案
- Gridview 点击单元格变色,点另一个时第一个还原(Tag)
- 实现多功能的表格的各行选择变色(点击、单选、多选)
- GridView拖拽删除,点击变色添加、再点击还原删除
- Android--GridView/ListView 点击Item修改Item背景 标识是当前选择项方法:
- Android解决GridView或ListView点击背景变色问题
- Android--GridView/ListView 点击Item修改Item背景 标识是当前选择项方法
- Android实现按钮点击效果(第一次点击变色,第二次恢复)
- Android开发 使ListView的HeaderView和FooterView不可选择点击
- Android自定义view01-ScrollView嵌套GridView