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

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  不明白的地方可以直接问 。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android gridview
相关文章推荐