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


  
  1. package com.example.refreshgridview;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import android.app.Activity;
  5. import android.os.Bundle;
  6. import android.view.View;
  7. import android.widget.AdapterView;
  8. import android.widget.AdapterView.OnItemClickListener;
  9. import android.widget.GridView;
  10. import android.widget.Toast;
  11. import com.example.refreshgridview.PullToRefreshBase.OnRefreshListener;
  12. public class MainActivity extends Activity {
  13. private PullToRefreshGridView mPullRefreshGridView;
  14. private GridView mGridView;
  15. private GridViewAdapter adapter;
  16. private List<GridInfo> list = new ArrayList<GridInfo>();
  17. @Override
  18. protected void onCreate(Bundle savedInstanceState) {
  19. super.onCreate(savedInstanceState);
  20. setContentView(R.layout.activity_main);
  21. mPullRefreshGridView = (PullToRefreshGridView) findViewById(R.id.video_gridView);
  22. mPullRefreshGridView.init(PullToRefreshGridView.MODE_BOTH);
  23. mGridView = mPullRefreshGridView.getRefreshableView();
  24. mPullRefreshGridView.setOnRefreshListener(refreshListener);
  25. for (int i = 0; i < 40; i++) {
  26. GridInfo gridInfo = new GridInfo();
  27. gridInfo.setTitle((i)+"");
  28. if(i==0){
  29. gridInfo.setSelect(true);
  30. }else{
  31. gridInfo.setSelect(false);
  32. }
  33. list.add(gridInfo);
  34. }
  35. adapter = new GridViewAdapter(MainActivity.this,list);
  36. mGridView.setAdapter(adapter);
  37. mGridView.setOnItemClickListener(new OnItemClickListener() {
  38. @Override
  39. public void onItemClick(AdapterView<?> parent, View view,
  40. int position, long id) {
  41. for(int i=0;i<list.size();i++){
  42. if (position == i) {//当前选中的Item改变背景颜色
  43. list.get(i).setSelect(true);
  44. } else {
  45. list.get(i).setSelect(false);
  46. }
  47. }
  48. adapter.notifyDataSetChanged();
  49. }
  50. });
  51. }
  52. private OnRefreshListener refreshListener = new OnRefreshListener() {
  53. @Override
  54. public void onRefresh(int mode) {
  55. if (PullToRefreshGridView.MODE_PULL_DOWN_TO_REFRESH == mPullRefreshGridView.getCurrentMode()) {
  56. Toast.makeText(MainActivity.this, "下拉刷新", Toast.LENGTH_SHORT).show();
  57. mPullRefreshGridView.onRefreshComplete();
  58. } else if (mode == PullToRefreshGridView.MODE_PULL_UP_TO_REFRESH) {
  59. // 加载更多
  60. Toast.makeText(MainActivity.this, "上拉加载更多", Toast.LENGTH_SHORT).show();
  61. mPullRefreshGridView.onRefreshComplete();
  62. }
  63. }
  64. };
  65. }

adapter


  
  1. package com.example.refreshgridview;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import android.content.Context;
  5. import android.view.LayoutInflater;
  6. import android.view.View;
  7. import android.view.ViewGroup;
  8. import android.widget.BaseAdapter;
  9. import android.widget.TextView;
  10. public class GridViewAdapter extends BaseAdapter {
  11. private List<GridInfo> mList = new ArrayList<GridInfo>();
  12. private Context mContext;
  13. public GridViewAdapter(Context context,List<GridInfo> list) {
  14. super();
  15. this.mContext = context;
  16. this.mList = list;
  17. }
  18. @Override
  19. public int getCount() {
  20. return mList.size();
  21. }
  22. @Override
  23. public GridInfo getItem(int position) {
  24. return mList.get(position);
  25. }
  26. @Override
  27. public long getItemId(int position) {
  28. return position;
  29. }
  30. @Override
  31. public View getView(int position, View convertView, ViewGroup parent) {
  32. ChildHolderOne holder;
  33. if (convertView == null) {
  34. convertView = LayoutInflater.from(mContext).inflate(R.layout.item_grid_live_show, parent, false);
  35. holder = new ChildHolderOne();
  36. holder.tvTitle = (TextView)convertView.findViewById(R.id.title_tv);
  37. convertView.setTag(holder);
  38. } else {
  39. holder = (ChildHolderOne) convertView.getTag();
  40. }
  41. final GridInfo gridInfo = mList.get(position);
  42. if(gridInfo.isSelect() == true){
  43. holder.tvTitle.setBackgroundColor(mContext.getResources().getColor(R.color.grays));
  44. } else {
  45. holder.tvTitle.setBackgroundColor(mContext.getResources().getColor(R.color.gray_max));
  46. }
  47. final String number = gridInfo.getTitle();
  48. holder.tvTitle.setText(number);
  49. return convertView;
  50. }
  51. class ChildHolderOne {
  52. TextView tvTitle;
  53. }
  54. }

bean


  
  1. package com.example.refreshgridview;
  2. public class GridInfo {
  3. private String title;
  4. private boolean isSelect;
  5. public String getTitle() {
  6. return title;
  7. }
  8. public void setTitle(String title) {
  9. this.title = title;
  10. }
  11. public boolean isSelect() {
  12. return isSelect;
  13. }
  14. public void setSelect(boolean isSelect) {
  15. this.isSelect = isSelect;
  16. }
  17. }


很简单效果 ,和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个月内不可修改。