Android在Gridview中使用Checbox
来源:互联网 发布:linux 避免别人误删 编辑:程序博客网 时间:2024/06/10 02:53
Activity中:
//所用到的数据,和一些初始化
ResultBean<PubInitBean> pubinit = (ResultBean<PubInitBean>) getIntent().getSerializableExtra("pubinit"); //创建一个hashMap来记录checbox的状态,传到adapter中 HashMap<Integer, Boolean> isSelected = new HashMap<>(); List<PubInitBean.ListItem> mCoommomPt = new ArrayList<PubInitBean.ListItem>(); mCoommomPt.addAll(pubinit.getData().getCommon_facilities_list()); //初始化checbox状态(用于编辑的时候,根据个人使用情况),savesstatus==1时被选中 for (int i = 0; i < mCoommomPt.size(); i++) { if (1 == mCoommomPt.get(i).getSavestatus()) { isSelected.put(i, true); } else { isSelected.put(i, false); } } ptGridviewAdapter = new PtGridviewAdapter(mCoommomPt, this, isSelected); mGridviewPtss.setAdapter(ptGridviewAdapter);
//实现adapter中的checbox的点击事件 0是全选功能的position,看个人情况
@Overridepublic void clickListener(View v) { CheckBox checkBox = (CheckBox) v; if (0 == position && !isSelected.get(0)) {//点击全选,之前未被选中 for (int i = 0; i < mCoommomPt.size(); i++) { isSelected.put(i, true); mCoommomPt.get(i).setSavestatus(1); checkBox.setChecked(true); } } else if (0 == position && isSelected.get(0)) {//点击全选,之前被选中 for (int i = 0; i < mCoommomPt.size(); i++) { isSelected.put(i, false); ptGridviewAdapter.notifyDataSetChanged(); mCoommomPt.get(i).setSavestatus(0); checkBox.setChecked(false); } } else if (isSelected.get(position)) {//点击的position以前被选中 mCoommomPt.get(position).setSavestatus(0); checkBox.setChecked(false); isSelected.put(position, false); } else if (!isSelected.get(position)) {//点击的position以前未被选中 mCoommomPt.get(position).setSavestatus(1); checkBox.setChecked(true); isSelected.put(position, true); } ptGridviewAdapter.notifyDataSetChanged();
页面布局(一个简单的gridview):
<GridView android:id="@+id/gridviewPtss" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/t1" android:layout_marginRight="@dimen/dp_15" android:layout_marginLeft="@dimen/dp_15" android:layout_marginTop="@dimen/dp_20" android:horizontalSpacing="@dimen/dp_20" android:numColumns="3" android:scrollbars="none" android:stretchMode="columnWidth" android:verticalSpacing="@dimen/dp_15"/>
GridviewAdapter的实现:
public class PtGridviewAdapter extends BaseAdapter implements View.OnClickListener {private List<PubInitBean.ListItem> mCoommomPt;private GridviewViewHolder holder;// 用来控制CheckBox的选中状况private HashMap<Integer, Boolean> isSelected;private MyClickListener mListener;public PtGridviewAdapter(List<PubInitBean.ListItem> coommomPt, MyClickListener mListener, HashMap<Integer, Boolean> isSelected) { mCoommomPt = coommomPt; this.mListener = mListener; this.isSelected = isSelected;}@Overridepublic int getCount() { return mCoommomPt.size();}@Overridepublic Object getItem(int position) { return mCoommomPt.get(position);}@Overridepublic long getItemId(int position) { return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) { if (null == convertView) { holder = new GridviewViewHolder(); convertView = LayoutInflater.from(parent.getContext()).inflate(R.layout.gridview_ptss_item, null); holder.mCbText = (CheckBox) convertView.findViewById(R.id.cb_text); convertView.setTag(holder); } else { holder = (GridviewViewHolder) convertView.getTag(); } holder.mCbText.setText(mCoommomPt.get(position).getContendt()); if (mCoommomPt.get(position).savestatus == 1) holder.mCbText.setChecked(true); holder.mCbText.setOnClickListener(this); holder.mCbText.setTag(position); //这是必须要加的, 根据isSelected来设置checkbox的选中状况 holder.mCbText.setChecked(isSelected.get(position)); return convertView;}public static class GridviewViewHolder { public CheckBox mCbText;}@Overridepublic void onClick(View v) { mListener.clickListener(v);}//自定义接口,用于回调按钮点击事件到Activity public interface MyClickListener { public void clickListener(View v);}
}
Adapter的布局:
<CheckBox android:id="@+id/cb_text" android:layout_width="match_parent" android:layout_height="@dimen/ptss_item_height" android:layout_centerVertical="true" android:background="@drawable/griview_pt_selector" android:button="@null" android:focusable="false" android:gravity="center" android:textColor="@color/griview_pt_color_selector" android:textSize="@dimen/font15sp"/>
阅读全文
0 0
- Android在Gridview中使用Checbox
- Checbox在GridView中的应用
- Android中GridView使用
- Android中GridView使用
- Android中GridView使用
- Android中GridView使用
- Android中GridView使用
- Android中GridView使用
- Android中GridView使用
- Android中GridView使用
- Android中GridView使用
- Android中GridView使用
- 在GridView中使用Cache
- 在GridView中使用FindControl
- 在GridView中使用Cache
- 在GridView中使用FindControl
- 在GridView中使用Cache
- 在GridView中使用Cache
- 如何使用Vegas制作文字的扫光效果?
- Eclipse中Android SDK Manager无法打开
- js面试题
- PHP中static修饰的静态变量的笔记
- 使用Vue.js实现表格的排序和搜索功能
- Android在Gridview中使用Checbox
- 语义网基础教程 (第一版)2 XML结构化网络文档
- 屏蔽浏览器右键菜单功能,自定义右键菜单(兼容IE8)
- NoClassDefFoundError: com/netflix/hystrix/contrib/javanica/aop/aspectj/HystrixCommandAspect
- _.pull(arr, id); loadsh
- 深入学习Kafka:Topic的删除过程分析
- Shader山下(二十八) 切空间
- nfs服务器 ~ autofs自动挂载
- h5利用deviceorientation摇一摇