条目的全选-反选_Demo
来源:互联网 发布:srt字幕制作软件 编辑:程序博客网 时间:2024/04/28 07:19
主Activity代码
package com.example.allandreverse;import java.util.ArrayList;import java.util.LinkedList;import java.util.List;import android.os.Bundle;import android.app.Activity;import android.content.Context;import android.view.Menu;import android.view.View;import android.view.ViewGroup;import android.view.View.OnClickListener;import android.widget.BaseAdapter;import android.widget.Button;import android.widget.CheckBox;import android.widget.ListView;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends Activity { private ListView list_view; private CheckAdapter checkAdapter; private CheckBox allBox; private Button reverse; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //获取控件 list_view = (ListView)findViewById(R.id.list_view); allBox = (CheckBox)findViewById(R.id.all); reverse = (Button)findViewById(R.id.reverse); //条目集合 List<String> list = new ArrayList<String>(); //添加(测试)数据 for (int i = 0; i < 15; i++) { list.add("这是条目" + i); } //创建适配器、设置适配器 checkAdapter = new CheckAdapter(getApplicationContext(), list); list_view.setAdapter(checkAdapter); //设置全选 allBox.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { boolean flag = allBox.isChecked(); for (int i = 0; i < checkAdapter.getSelect().size(); i++) { checkAdapter.getSelect().set(i, flag); } checkAdapter.notifyDataSetChanged(); } }); //反选 reverse.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (! checkAdapter.getSelect().contains(true)) { Toast.makeText(MainActivity.this, "qingxuanz", 0).show(); }else { for (int i = 0; i < checkAdapter.getSelect().size(); i++) { if (checkAdapter.getSelect().get(i)) { checkAdapter.getSelect().set(i, false); }else { checkAdapter.getSelect().set(i, true); } } if (checkAdapter.getSelect().contains(false)) { allBox.setChecked(false); } checkAdapter.notifyDataSetChanged(); } } }); }//创建的适配器 private class CheckAdapter extends BaseAdapter { private List<String> list; private Context context; //创建一个集合 去记录选中与未选中的状态 LinkedList<Boolean> linkedList = new LinkedList<Boolean>(); public CheckAdapter(Context context, List<String> list) { // TODO Auto-generated constructor stub this.list = list; this.context = context; for (int i = 0; i < list.size(); i++) { linkedList.add(false); } } //对外提供一个方法 获取这个集合 private List<Boolean> getSelect() { return linkedList; } @Override public int getCount() { // TODO Auto-generated method stub return list.size(); } @Override public Object getItem(int position) { // TODO Auto-generated method stub return list.get(position); } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } @Override public View getView(final int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = View.inflate(context, R.layout.item, null); } CheckBox ck = (CheckBox) convertView.findViewById(R.id.ck); TextView tView = (TextView) convertView.findViewById(R.id.tv); tView.setText(list.get(position)); ck.setChecked(linkedList.get(position)); //对checkBox点击进行监听 ck.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //点中的时候改成相反的值 linkedList.set(position, ! linkedList.get(position)); //点击的同时还要去判断全选 if (linkedList.contains(false)) { allBox.setChecked(false); }else { allBox.setChecked(true); } notifyDataSetChanged(); } }); return convertView; } }}
主类XML布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <ListView android:id="@+id/list_view" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_above="@+id/linear" > </ListView> <LinearLayout android:id="@+id/linear" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:orientation="horizontal" > <CheckBox android:id="@+id/all" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="全选" /> <Button android:text="反选" android:id="@+id/reverse" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout></RelativeLayout>
适配器的item布局:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <CheckBox android:id="@+id/ck" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/tv" android:textSize="18sp" android:layout_width="wrap_content" android:layout_height="wrap_content" /></LinearLayout>
0 0
- 条目的全选-反选_Demo
- Android 中listview的全选、全不选、反选、获得选中条目数据
- 安卓ListView条目删除-全选,反选,复位,取消,
- 全选反选的处理
- ListView的全选反选
- 列表的全选反选
- RecyclerView单选框删除条目,全选删除,Recyclerview 实现多选,单选,全选,反选,批量删除的步骤 1.在Recyclerview布局中添加上底部的全选和反选按钮,删除按钮,和计算
- 全选,反全选,反选,获取选中的值,根据子选择控制全选按钮
- js复选框的全选,多选,全选,全不选,反选
- DATAGRID 加入全选反选的按钮
- 复选框的全选、全不选、反选
- js版本的全选与反选
- checkbox的全选和反选
- checkBox的全选和 反选
- 复选框的全选、反选、全不选
- 列表框的 全选 反选 取消
- listbox的全选,反选和全不选
- Dom的全选和反选
- Service
- yii2中在view页面写js代码/城市联动
- Android 自定义View canvas.drawBitmap使用举例
- House Robber II
- 在Python中使用QuantLib
- 条目的全选-反选_Demo
- TTreeView、TTreeNodes和TTreeNode
- Android的线程和线程池
- ORA-00093问题
- REDIS字符串-二进制安全的含义
- extjs登陆窗口含验证码
- 一个【nodejs】结合【electron】或【nwjs】的爬虫的新思路
- Spring异常处理
- NAPI机制分析