GridView 设置选中状态
【摘要】
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单选 ,多选都是一个道理,就是记住并操作当前位置的数据 然后刷新。
这个源码 是在上一篇给GridView添加 下拉刷新 下拉加载的demo基础上加的,所以这个里面也有GridView上拉下拉的功能。希望可以帮到大家。
如果还有其它问题 可以加入 我的qq群: Android开发经验交流群 454430053 互相讨论交流。
文章来源: wukong.blog.csdn.net,作者:再见孙悟空_,版权归原作者所有,如需转载,请联系作者。
原文链接:wukong.blog.csdn.net/article/details/53172429
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)