ListView 复选checkbox
来源:互联网 发布:搜索软件 编辑:程序博客网 时间:2024/05/29 08:50
//布局
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/scrollview" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.bawei.listview.MainActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:id="@+id/btn_all" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:onClick="onClick" android:text="全选"/> <Button android:id="@+id/btn_hide" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:onClick="onClick" android:text="隐藏已选"/> <Button android:id="@+id/btn_no" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:onClick="onClick" android:text="全不选"/> </LinearLayout> <com.bawei.listview.ScrollListView android:id="@+id/lv" android:layout_width="match_parent" android:layout_height="match_parent"> </com.bawei.listview.ScrollListView> </LinearLayout></ScrollView>
//创建bean包
`class Data{
public int index;
public String text;public boolean isCheck;
}`
//MainActivity
private ListView lv; private MyAdapter adapter; private List<Data> list; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initData(); initView(); } private void initData() { list = new ArrayList<>(); for(int i=0;i<50;i++){ Data data = new Data(); data.index = i; data.text = "item " +i; list.add(data); } } private boolean isHide = false; private void initView() { lv = (ListView) findViewById(R.id.lv); adapter = new MyAdapter(list,this,false); lv.setAdapter(adapter); } @Override public void onClick(View v) { if(v.getId()==R.id.btn_all){ check(true); }else if(v.getId()==R.id.btn_no){ check(false); }else if(v.getId()==R.id.btn_hide){ isHide = isHide==true?false:true; hide(isHide); } } private void hide(boolean isHide) { Button btn = (Button)findViewById(R.id.btn_hide); if(isHide) btn.setText("取消隐藏"); else btn.setText("隐藏已选"); adapter.setHide(isHide); adapter.notifyDataSetChanged(); } private void check(boolean flag) { for (Data data: list) data.isCheck = flag; adapter.notifyDataSetChanged(); }}
//adapter
package com.bawei.listview;import android.content.Context;import android.util.Log;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.CheckBox;import android.widget.CompoundButton;import android.widget.TextView;import java.util.ArrayList;import java.util.List;/** * Created by yekh on 2016/11/1. */public class MyAdapter extends BaseAdapter { private List<Data> list = new ArrayList<>();//当前展示的数据 private List<Data> listAll;//全部数据 备注 保持更MainActivity的数据一致 private Context mContext; private boolean isHide; public MyAdapter(List<Data> list, Context context,boolean isHide) { listAll = list; this.list.addAll(listAll); mContext = context; this.isHide = isHide; } public void setHide(boolean isHide){ this.isHide = isHide; } public void check() { list.clear(); list.addAll(listAll); if(isHide){ List<Data> listDel = new ArrayList<>();// for(Data data:list){//取出已选的数据// if(data.isCheck)// listDel.add(data);// } for(int i=0;i<list.size();i++){//取出已选的数据 存储在listDel Data data = list.get(i); if(data.isCheck) listDel.add(data); } for(Data data:listDel)//删除全部已选的数据 list list.remove(data); } super.notifyDataSetChanged(); } @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(final int position, View convertView, ViewGroup parent) { ViewHolder holder = null; if(convertView==null){ convertView = View.inflate(mContext,R.layout.lv_item,null); holder =new ViewHolder(); holder.checkBox = (CheckBox) convertView.findViewById(R.id.checkbox); holder.content = (TextView) convertView.findViewById(R.id.content); holder.create = (TextView) convertView.findViewById(R.id.create); holder.index = (TextView) convertView.findViewById(R.id.index); holder.create.setText(position+""); convertView.setTag(holder); }else { holder = (ViewHolder)convertView.getTag(); } Data data = list.get(position); holder.content.setText(data.text); holder.index.setText(data.index+""); holder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { Log.e("check","check--->"+position+"/"+isChecked); list.get(position).isCheck = isChecked;//listAll当中对应对象的数据同时改变 check(); } }); //holder.checkBox.setOnCheckedChangeListener(null); holder.checkBox.setChecked(data.isCheck); return convertView; } class ViewHolder { CheckBox checkBox; TextView content; TextView create; TextView index; }
//创建scorrowview
public class ScrollListView extends ListView{ public ScrollListView(Context context) { super(context); } public ScrollListView(Context context, AttributeSet attrs) { super(context, attrs); } public ScrollListView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); MeasureSpec.get super.onMeasure(widthMeasureSpec, expandSpec); }}
0 0
- ListView 复选checkbox
- ListView+CheckBox解决复选框混乱的问题
- listview复用convertView导致CheckBox复选的问题
- ListView 中的每一项添加一个checkbox复选框,实现复选功能
- checkbox复选框 翻页复选
- js复选框checkbox
- Android 复选框CheckBox
- CheckBox复选框
- 关于复选框checkbox
- CheckBox复选框
- checkbox复选事件js
- checkBox复选框
- CheckBox实现复选
- 复选框CheckBox
- 复选框checkbox控件
- 复选框CheckBox
- 03 CheckBox 复选框
- CheckBox复选框
- linux man手册使用说明
- parseFloat() parseInt()
- Java里如何判断一个String是含有空格或空字符串
- 让视野外html元素显示在视野中
- Servlet的生命周期及每个阶段使用的方法
- ListView 复选checkbox
- CXF
- Eclipse下的Android JNI 开发
- Android启动过程详解(1)——总体启动框架
- 2016.11.06
- 关于观察者模式的介绍以及安卓中的使用
- 【技术分享】规则引擎
- SSH连接GitHub提示ssh: connect to host github.com port 22: Bad file number
- Java面向对象三大特性之多态