android模拟数据实现全选反选批量删除

来源:互联网 发布:js 图片跟随鼠标移动 编辑:程序博客网 时间:2024/05/22 06:53

此贴没有大量水帖文字,读者请放心,代码简单明了,轻松入门,高手勿喷!


废话不多说直接看效果,附完整代码:


MyAdapter适配器
public class MyAdapter extends BaseAdapter {    // 数据源    ArrayList<Bean> lists;    // 上下文    Context context;    // 创建接口    private getItemPosition getitemPosition;    public interface getItemPosition{        void getitemPosition(int position);    }    public void getitemPosition(getItemPosition position){        this.getitemPosition = position;    }    public MyAdapter(ArrayList<Bean> lists, Context context) {        this.lists = lists;        this.context = context;    }    @Override    public int getCount() {        return lists.size();    }    @Override    public Object getItem(int i) {        return lists.get(i);    }    @Override    public long getItemId(int i) {        return i;    }    @Override    public View getView(final int i, View view, ViewGroup viewGroup) {        MyHolder holder;        if (view == null){            view = LayoutInflater.from(context).inflate(R.layout.item,null);            holder = new MyHolder();            holder.tv = view.findViewById(R.id.textView);            holder.cb = view.findViewById(R.id.item_check);            view.setTag(holder);        }else{            holder = (MyHolder) view.getTag();        }        holder.tv.setText(lists.get(i).name);        holder.cb.setChecked(lists.get(i).isno);        holder.cb.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                // 将点击的条目 position传入接口中 在Main中调用                getitemPosition.getitemPosition(i);            }        });        return view;    }    class MyHolder{        TextView tv;        CheckBox cb;    }}

MainActivity
public class MainActivity extends AppCompatActivity {    ListView listView;  // 数据    Button btn_del;     // 删除    CheckBox cb;        // bottom的全选框    MyAdapter adapter;  // 适配器    ArrayList<Bean> lists; // 模拟数据集合    // 用于选中条目的数量    private int flag;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        init();        // 初始化数据        initData();    }    private void initData() {        for (int i = 0; i <10 ; i++) {            lists.add(new Bean("测试"+i,false));        }        adapter = new MyAdapter(lists,MainActivity.this);        listView.setAdapter(adapter);        // 接口回调传position值        adapter.getitemPosition(new MyAdapter.getItemPosition() {            @Override            public void getitemPosition(int position) {                lists.get(position).isno =  ! lists.get(position).isno;                flag = 0;                for (int i = 0 ; i < lists.size();i++){                    if (lists.get(i).isno){                        flag++;                    }                }                // 如果条目全部选中的时候 全选框为 选中状态                cb.setChecked(flag == lists.size());            }        });        // 全选框的监听事件        cb.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                if (cb.isChecked()){                    for (int i = 0; i < lists.size(); i++) {                        lists.get(i).isno = true;                    }                }else{                    for (int i = 0; i < lists.size(); i++) {                        lists.get(i).isno = false;                    }                }                adapter.notifyDataSetChanged();            }        });        // 删除按钮的监听事件        btn_del.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                // 将选中的条目 存入到一个新的集合                ArrayList<Bean> del_item = new ArrayList<>();                // 遍历判断是否选中                for (int i = 0; i < lists.size(); i++) {                    if(lists.get(i).isno){                        del_item.add(lists.get(i));                    }                }                // 根据选中的条目进行全部移除                lists.removeAll(del_item);                adapter.notifyDataSetChanged();            }        });    }    private void init() {        listView = (ListView) findViewById(R.id.listView);        btn_del = (Button) findViewById(R.id.btn_del);        cb = (CheckBox) findViewById(R.id.checkAll);        lists = new ArrayList<>();    }}

Bean类
public class Bean {    public String name;    public boolean isno;    public Bean(String name, boolean isno) {        this.name = name;        this.isno = isno;    }}


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/activity_main"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    tools:context="com.bwie.www.checkdemo1106.MainActivity">    <ListView        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_weight="1"        android:id="@+id/listView">    </ListView>    <CheckBox        android:text="全选"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:id="@+id/checkAll"/>    <Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:id="@+id/btn_del"        android:text="删除"/></LinearLayout>

如果有需要购物车全选反选商品计价Demo的,请参考http://blog.csdn.net/qq_37199105/article/details/78312797。
原创粉丝点击