GridView 设置选中状态

举报
再见孙悟空_ 发表于 2022/01/13 01:10:27 2022/01/13
【摘要】 GridView设置选中状态 设置原理 是将bean中的数据加入一个字段isSelect  默认填充数据的时候 ,默认选中的第一个值 设置为true,其余的都设置为false. 然后 点击单个item的时候 ,循环list<bean> 将选中的position 的item设置为true,其余的都设置为fal...

GridView设置选中状态

设置原理 是将bean中的数据加入一个字段isSelect  默认填充数据的时候 ,默认选中的第一个值 设置为true,其余的都设置为false.

然后 点击单个item的时候 ,循环list<bean> 将选中的position 的item设置为true,其余的都设置为false  ,然后adapter notify.

activity


      package com.example.refreshgridview;
      import java.util.ArrayList;
      import java.util.List;
      import android.app.Activity;
      import android.os.Bundle;
      import android.view.View;
      import android.widget.AdapterView;
      import android.widget.AdapterView.OnItemClickListener;
      import android.widget.GridView;
      import android.widget.Toast;
      import com.example.refreshgridview.PullToRefreshBase.OnRefreshListener;
      public class MainActivity extends Activity {
     	private PullToRefreshGridView mPullRefreshGridView;
     	private GridView mGridView;
     	private GridViewAdapter adapter;
     	private List<GridInfo> list = new ArrayList<GridInfo>();
     	@Override
     	protected void onCreate(Bundle savedInstanceState) {
     		super.onCreate(savedInstanceState);
      		setContentView(R.layout.activity_main);
      		mPullRefreshGridView = (PullToRefreshGridView) findViewById(R.id.video_gridView);
      		mPullRefreshGridView.init(PullToRefreshGridView.MODE_BOTH);
      		mGridView = mPullRefreshGridView.getRefreshableView();
      		mPullRefreshGridView.setOnRefreshListener(refreshListener);
     		for (int i = 0; i < 40; i++) {
     			GridInfo gridInfo = new GridInfo();
      			gridInfo.setTitle((i)+"");
     			if(i==0){
      				gridInfo.setSelect(true);
      			}else{
      				gridInfo.setSelect(false);
      			}
      			list.add(gridInfo);
      		}
      		adapter = new GridViewAdapter(MainActivity.this,list);
      		mGridView.setAdapter(adapter);
      		mGridView.setOnItemClickListener(new OnItemClickListener() {
     			@Override
     			public void onItemClick(AdapterView<?> parent, View view,
     					int position, long id) {
     				   for(int i=0;i<list.size();i++){
     		               if (position == i) {//当前选中的Item改变背景颜色
      		            	   list.get(i).setSelect(true);
      		               } else {
      		            	   list.get(i).setSelect(false);
      		               }
      		            }
      				   adapter.notifyDataSetChanged();
      			}
      		});
      	}
     	private OnRefreshListener refreshListener = new OnRefreshListener() {
     		@Override
     		public void onRefresh(int mode) {
     			if (PullToRefreshGridView.MODE_PULL_DOWN_TO_REFRESH == mPullRefreshGridView.getCurrentMode()) {
      				Toast.makeText(MainActivity.this, "下拉刷新", Toast.LENGTH_SHORT).show();
      				mPullRefreshGridView.onRefreshComplete();
      			} else if (mode == PullToRefreshGridView.MODE_PULL_UP_TO_REFRESH) {
     				// 加载更多
      				Toast.makeText(MainActivity.this, "上拉加载更多", Toast.LENGTH_SHORT).show();
      				mPullRefreshGridView.onRefreshComplete();
      			}
      		}
      	};
      }
  
 

adapter


      package com.example.refreshgridview;
      import java.util.ArrayList;
      import java.util.List;
      import android.content.Context;
      import android.view.LayoutInflater;
      import android.view.View;
      import android.view.ViewGroup;
      import android.widget.BaseAdapter;
      import android.widget.TextView;
      public class GridViewAdapter extends BaseAdapter {
         private List<GridInfo> mList = new ArrayList<GridInfo>();
         private Context mContext;
         public GridViewAdapter(Context context,List<GridInfo> list) {
             super();
             this.mContext = context;
             this.mList = list;
          }
         @Override
         public int getCount() {
             return mList.size();
          }
         @Override
         public GridInfo getItem(int position) {
             return mList.get(position);
          }
         @Override
         public long getItemId(int position) {
             return position;
          }
         @Override
         public View getView(int position, View convertView, ViewGroup parent) {
          	ChildHolderOne holder;
             if (convertView == null) {
                  convertView = LayoutInflater.from(mContext).inflate(R.layout.item_grid_live_show, parent, false);
                  holder = new ChildHolderOne();
                  holder.tvTitle = (TextView)convertView.findViewById(R.id.title_tv);
                  convertView.setTag(holder);
              } else {
                  holder = (ChildHolderOne) convertView.getTag();
              }
             final GridInfo gridInfo = mList.get(position);
             if(gridInfo.isSelect() == true){
              	holder.tvTitle.setBackgroundColor(mContext.getResources().getColor(R.color.grays));
              } else {
              	holder.tvTitle.setBackgroundColor(mContext.getResources().getColor(R.color.gray_max));
              }
             final String number = gridInfo.getTitle();
              holder.tvTitle.setText(number);
             return convertView;
          }
     	class ChildHolderOne {
      		TextView tvTitle;
      	}
      }
  
 

bean


      package com.example.refreshgridview;
      public class GridInfo {
     	private String title;
     	private boolean isSelect;
     	public String getTitle() {
     		return title;
      	}
     	public void setTitle(String title) {
     		this.title = title;
      	}
     	public boolean isSelect() {
     		return isSelect;
      	}
     	public void setSelect(boolean isSelect) {
     		this.isSelect = isSelect;
      	}
      }
  
 


很简单效果 ,和listview单选 ,多选都是一个道理,就是记住并操作当前位置的数据 然后刷新。

DEMO源码

这个源码 是在上一篇给GridView添加 下拉刷新 下拉加载的demo基础上加的,所以这个里面也有GridView上拉下拉的功能。希望可以帮到大家。

如果还有其它问题 可以加入 我的qq群: Android开发经验交流群 454430053 互相讨论交流。

文章来源: wukong.blog.csdn.net,作者:再见孙悟空_,版权归原作者所有,如需转载,请联系作者。

原文链接:wukong.blog.csdn.net/article/details/53172429

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。