适配器 Adapter
package com.example.snmsung.quanxuandemo.Adapter; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.CheckBox; import android.widget.TextView; import com.example.snmsung.quanxuandemo.Bean.DataBean; import com.example.snmsung.quanxuandemo.R; import java.util.List; /** * Created by SNMSUNG on 2017/11/22. */ public class MyAdapter extends BaseAdapter{ private Context mContext; private List<DataBean> mDatas; private LayoutInflater mInflater; public boolean flage = false; public MyAdapter(Context mContext, List<DataBean> mDatas) { this.mContext = mContext; this.mDatas = mDatas; mInflater=LayoutInflater.from(this.mContext); } @Override public int getCount() { return mDatas.size(); } @Override public Object getItem(int position) { return mDatas.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if(convertView==null){ //下拉项布局 convertView=mInflater.inflate(R.layout.list_item_data,null); holder=new ViewHolder(); //获取布局文件 holder.checkboxOperateData= (CheckBox) convertView.findViewById(R.id.checkbox_operate_data); holder.textTitle= (TextView) convertView.findViewById(R.id.text_title); holder.textDesc= (TextView) convertView.findViewById(R.id.text_desc); convertView.setTag(holder); }else { holder= (ViewHolder) convertView.getTag(); } final DataBean dataBean=mDatas.get(position); if(dataBean!=null){ holder.textTitle.setText(dataBean.title); holder.textDesc.setText(dataBean.desc); //根据isSelected来设置CheckBox的显示显示状况 if(flage){ holder.checkboxOperateData.setVisibility(View.VISIBLE); }else { holder.checkboxOperateData.setVisibility(View.GONE); } holder.checkboxOperateData.setChecked(dataBean.isCheck); holder.checkboxOperateData.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(dataBean.isCheck){ dataBean.isCheck=flage; }else { dataBean.isCheck=true; } } }); } return convertView; } class ViewHolder { public CheckBox checkboxOperateData; public TextView textTitle; public TextView textDesc; } }
MainActivity
package com.example.snmsung.quanxuandemo; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.ListView; import android.widget.Toast; import com.example.snmsung.quanxuandemo.Adapter.MyAdapter; import com.example.snmsung.quanxuandemo.Bean.DataBean; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { private ArrayList<DataBean> mDatas; private ListView listView; private MyAdapter myAdapter; private Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button) findViewById(R.id.button); listView = (ListView) findViewById(R.id.listview); //数据 mDatas = new ArrayList<>(); for (int i = 0; i < 20; i++) { DataBean dataBean = new DataBean("" + i, "上邪"+i, "山无棱,天地合,乃敢与君绝"); mDatas.add(dataBean); } //添加适配器 myAdapter = new MyAdapter(this,mDatas); listView.setAdapter(myAdapter); } /** * 编辑、取消编辑 * @param view */ public void btnEditList(View view){ myAdapter.flage=!myAdapter.flage; if(myAdapter.flage){ button.setText("取消"); }else { button.setText("编辑"); } myAdapter.notifyDataSetChanged(); } //全选 public void btnSelectAllList(View view){ if(myAdapter.flage){ for (int i = 0; i < mDatas.size(); i++) { mDatas.get(i).isCheck=true; } myAdapter.notifyDataSetChanged(); } } /** * 全不选 * @param view */ public void btnNoLis(View view){ if(myAdapter.flage){ for (int i = 0; i < mDatas.size(); i++) { mDatas.get(i).isCheck=false; } myAdapter.notifyDataSetChanged(); } } /** * 反选 * @param view */ public void btnfanxuanList(View view){ if(myAdapter.flage){ for (int i = 0; i < mDatas.size(); i++) { if(mDatas.get(i).isCheck){ mDatas.get(i).isCheck=false; }else { mDatas.get(i).isCheck=true; } } myAdapter.notifyDataSetChanged(); } } /** * 获取选中数据 * @param view */ public void btnOperateList(View view) { List<String> ids = new ArrayList<>(); if (myAdapter.flage) { for (int i = 0; i < mDatas.size(); i++) { if (mDatas.get(i).isCheck) { ids.add(mDatas.get(i).id); } } Toast.makeText(MainActivity.this,ids.toString(), Toast.LENGTH_SHORT).show(); Log.e("TAG", ids.toString()); } } }
Bean
package com.example.snmsung.quanxuandemo.Bean; /** * Created by SNMSUNG on 2017/11/22. */ public class DataBean { public String id; public String title; public String desc; public boolean isCheck; public DataBean(String id, String title, String desc) { this.id = id; this.title = title; this.desc = desc; } }
Main 布局XML
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="40dp" android:orientation="horizontal"> <Button android:id="@+id/button" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:text="编辑" android:onClick="btnEditList"/> <Button android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:text="全选" android:onClick="btnSelectAllList"/> <Button android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:text="全不选" android:onClick="btnNoLis"/> <Button android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:text="反选" android:onClick="btnfanxuanList"/> <Button android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:text="查看数据" android:onClick="btnOperateList"/> </LinearLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"> <ListView android:id="@+id/listview" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout> </LinearLayout>
list_item_data.xml 布局
<?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/checkbox_operate_data" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/text_title" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/text_desc" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>