Listview嵌套CheckBOX 实现全选反选取消,并对选中项进行标记
来源:互联网 发布:java 当前时间 年月日 编辑:程序博客网 时间:2024/05/16 16:12
项目中遇到类似需求 ,参考前辈代码自己进行整改。直接发码。
Activity中
public class ScreenActivity extends AppCompatActivity implements View.OnClickListener { private static final String TAG = ScreenActivity.class.getSimpleName(); private SharedPreferences sp; private SharedPreferences.Editor editor; private Button but_editor; private Button but_all; private Button but_sure; private Button but_invert; private Button but_clean; private ListView listview; private List<Experiment.DataBean.PlotsBean.PhenotypesBean> phenotypesBeanList; private ScreenAdapter adapter; private TextView Sure; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_screen); initView(); } private void initView() { sp = this.getSharedPreferences("person", MODE_PRIVATE);// 初始化 SharedPreferences 储存 editor = sp.edit();//将SharedPreferences 储存 可编辑化 but_editor = ((Button) findViewById(R.id.bt_editor)); but_editor.setOnClickListener(this); but_all = ((Button) findViewById(R.id.bt_all)); but_all.setOnClickListener(this); but_invert = ((Button) findViewById(R.id.bt_invert)); but_invert.setOnClickListener(this); but_clean = ((Button) findViewById(R.id.bt_clean)); but_clean.setOnClickListener(this); Sure = ((TextView) findViewById(R.id.OK)); Sure.setOnClickListener(this); listview = ((ListView) findViewById(R.id.listView)); Gson gson = new Gson(); Experiment experiment = gson.fromJson(sp.getString("TYPE", ""), Experiment.class); phenotypesBeanList = experiment.getData().get(0).getPlots().get(0).getPhenotypes(); Log.e(TAG, "-----------" + phenotypesBeanList); adapter = new ScreenAdapter(this, phenotypesBeanList); listview.setAdapter(adapter); listview.setOnItemClickListener(new AdapterView.OnItemClickListener() { private CheckBox cb; @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { final Experiment.DataBean.PlotsBean.PhenotypesBean phenotypesBean = phenotypesBeanList.get(position); cb = ((CheckBox) view.findViewById(R.id.screen_checkbox)); cb.toggle(); if (phenotypesBean.isCheck) { phenotypesBean.isCheck = false; } else { phenotypesBean.isCheck = true; } } }); } @Override protected void onResume() { if (getRequestedOrientation() != ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) { //设置为竖屏 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); } super.onResume(); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.bt_editor: adapter.flage = !adapter.flage; if (adapter.flage) { but_editor.setText("取消"); } else { but_editor.setText("编辑"); } adapter.notifyDataSetChanged(); break; case R.id.bt_all: if (adapter.flage) { for (int i = 0; i < phenotypesBeanList.size(); i++) { phenotypesBeanList.get(i).isCheck = true; } adapter.notifyDataSetChanged(); } break; case R.id.bt_invert: if (adapter.flage) { for (int i = 0; i < phenotypesBeanList.size(); i++) { if (phenotypesBeanList.get(i).isCheck) { phenotypesBeanList.get(i).isCheck = false; } else { phenotypesBeanList.get(i).isCheck = true; } } adapter.notifyDataSetChanged(); } break; case R.id.bt_clean: if (adapter.flage) { for (int i = 0; i < phenotypesBeanList.size(); i++) { phenotypesBeanList.get(i).isCheck = false; } adapter.notifyDataSetChanged(); } break; case R.id.OK: List<String> ids = new ArrayList<>(); if (adapter.flage) { for (int i = 0; i < phenotypesBeanList.size(); i++) { if (phenotypesBeanList.get(i).isCheck) { ids.add(String.valueOf(i)); } } Log.e(TAG, "选中项是------------>" + ids.toString()); } break; } }}
适配器中
public class ScreenAdapter extends BaseAdapter { private Context context; private List<Experiment.DataBean.PlotsBean.PhenotypesBean> phenotypesBeanList; private LayoutInflater Inflater; public boolean flage = false; public Map<Integer, String> selected; private List<String> dataIds; public ScreenAdapter(Context context, List<Experiment.DataBean.PlotsBean.PhenotypesBean> phenotypesBeanList) { if (phenotypesBeanList != null) { this.phenotypesBeanList = phenotypesBeanList; } else { this.phenotypesBeanList = new ArrayList<>(); } selected = new HashMap<>(); dataIds = new ArrayList<>(); this.context = context; Inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } @Override public int getCount() { return phenotypesBeanList == null ? 0 : phenotypesBeanList.size(); } @Override public Experiment.DataBean.PlotsBean.PhenotypesBean getItem(int position) { return phenotypesBeanList.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder = null; if (convertView == null) { convertView = Inflater.inflate(R.layout.item_screen, null); viewHolder = new ViewHolder(); x.view().inject(viewHolder, convertView); convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag(); } final Experiment.DataBean.PlotsBean.PhenotypesBean phenotypesBean = phenotypesBeanList.get(position); if (phenotypesBean != null) { viewHolder.textView.setText(phenotypesBeanList.get(position).getPhenotypeName()); // 根据isSelected来设置checkbox的显示状况 if (flage) { viewHolder.checkboxOperateData.setVisibility(View.VISIBLE); } else { viewHolder.checkboxOperateData.setVisibility(View.GONE); } if (selected.containsKey(position)) { viewHolder.checkboxOperateData.setChecked(true); } else { viewHolder.checkboxOperateData.setChecked(false); } viewHolder.checkboxOperateData.setChecked(phenotypesBean.isCheck); //注意这里设置的不是onCheckedChangListener,还是值得思考一下的/* viewHolder.checkboxOperateData.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (phenotypesBean.isCheck) { phenotypesBean.isCheck = false; } else { phenotypesBean.isCheck = true; } } });*/ } return convertView; } class ViewHolder { @ViewInject(R.id.screen_checkbox) CheckBox checkboxOperateData; @ViewInject(R.id.text_screen) TextView textView; }}
实体类
private int PhenotypeId;private String PhenotypeName;public boolean isCheck;
布局
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_screen" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.kenfeng.kfhjlr.kfzy.Activity.Activity.ScreenActivity"> <RelativeLayout android:layout_width="match_parent" android:layout_height="45dp" android:background="@color/zhuTi" android:orientation="vertical" android:padding="5dp"> <TextView android:id="@+id/topBar_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:text="数据筛选" android:textColor="@color/white" android:textSize="24sp" /> <ImageView android:id="@+id/back" android:layout_width="25dp" android:layout_height="25dp" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_centerVertical="true" android:layout_marginLeft="10dp" android:layout_marginStart="10dp" android:src="@mipmap/back" /> <TextView android:id="@+id/OK" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:layout_marginRight="15dp" android:text="确定" android:textColor="@color/white" android:textSize="20sp" /> </RelativeLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="50dp" android:orientation="horizontal"> <Button android:id="@+id/bt_editor" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:text="编辑" android:textSize="17sp" /> <Button android:id="@+id/bt_all" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:text="全选" android:textSize="17sp" /> <Button android:id="@+id/bt_invert" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:text="反选" android:textSize="17sp" /> <Button android:id="@+id/bt_clean" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:text="清除" android:textSize="17sp" /> </LinearLayout> <View android:layout_width="match_parent" android:layout_height="1dp" android:background="#D6D7D7" /> <ListView android:id="@+id/listView" android:layout_width="match_parent" android:layout_height="match_parent"></ListView></LinearLayout>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:gravity="center_vertical"> <LinearLayout android:layout_width="0dp" android:layout_height="50dp" android:layout_weight="4" android:gravity="center_vertical" android:orientation="horizontal"> <CheckBox android:id="@+id/screen_checkbox" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:checked="false" android:clickable="true" android:focusable="false" android:gravity="center" /> <TextView android:id="@+id/text_screen" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:text="脱粒时小区样品穗重" android:textSize="20sp" /> </LinearLayout></LinearLayout>
参考源码 http://blog.csdn.net/zuiwuyuan/article/details/50042841http://blog.csdn.net/zuiwuyuan/article/details/50042841
http://blog.csdn.net/zuiwuyuan/article/details/50042841
http://blog.csdn.net/zuiwuyuan/article/details/50042841
http://blog.csdn.net/zuiwuyuan/article/details/50042841
0 0
- Listview嵌套CheckBOX 实现全选反选取消,并对选中项进行标记
- ListView和CheckBox嵌套,全选,反选
- listView进行CheckBox的全选、反选
- ListView+CheckBox实现全选和反选
- Android开发ListView中包含CheckBox(点击item选中CheckBox),并设置其全选反选等功能
- Android实现ListView嵌套Checkbox真正的多选、全选、反选
- DeveXpress ASPxGridView实现checkbox全选反选(自带的ShowSelectCheckBOx)并获取选中checkbox对应的值集合
- jquery实现全选、反选、获得所有选中的checkbox
- 带checkbox的listView 实现多选,全选,反选
- checkbox的listView实现多选,全选,反选
- checkbox的listView 实现多选,全选,反选
- 实现listview中checkbox的全选、反选和取消
- ListView和CheckBox实现全选,全不选和反选
- jqeury checkbox全选/反选 ,子选项全选,全选选中
- javascript实现全选反选取消所选
- checkbox全选反选。如果子项中有一项未选择则全选checkbox不选中,如果子项全部选中则全选checkbox选中
- ListView中的CheckBox全选反选
- ListView + CheckBox (全选,反选,取消)
- [leetcode: Python] 108. Convert Sorted Array to Binary Search Tree
- ubuntu_docker_安装_以及一些问题的解决
- Quake4声音部分
- SVN如何查看修改的文件记录
- BOM模型演示---method
- Listview嵌套CheckBOX 实现全选反选取消,并对选中项进行标记
- log4net使用详解
- hdu 2082 母函数模板
- java中DateTime类的使用
- 项目随笔_1
- Java properties文件的xml形式
- 解决JSP页面乱码问题(非页面设置,编译器编码问题)
- Adapter的使用
- Mac出现Operation not permitted