最近在做一个项目的一个功能就是对售后人员进行增加和删除,今天我先讲删除的功能:
1.当你点击删除按钮会出现一个“全选”的checkbox键
2.当你点击它listview里面的item就会全被选中了。
3.如果listview其中一个item取消,checkbox键也会联动取消。
.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="vertical">
<RelativeLayout
style="@style/tt"
android:layout_width="match_parent">
<TextView
style="@style/tt_tv"
android:layout_centerInParent="true"
android:text="售后人员" />
<ImageView
android:id="@+id/custser"
style="@style/tt_iv"
android:background="@drawable/title_im" />
<ImageView
android:id="@+id/custser_del"
style="@style/tt_iv_right"
android:background="@mipmap/del" />
</RelativeLayout>
<CheckBox
android:id="@+id/ckb_main"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#666666"
android:padding="11dp"
android:text="全选"
android:textColor="@color/orange"
android:visibility="gone" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="@color/white"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="@dimen/custer_padding"
android:text="售后人员人数:"
android:textColor="@color/black"
android:textSize="22sp" />
<TextView
android:id="@+id/custser_sum"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="18"
android:textColor="@color/orange_deep"
android:textSize="22sp" />
</LinearLayout>
<ListView
android:id="@+id/custser_lv"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="11dp"
android:layout_weight="9"
android:divider="@color/gray_shallow"
android:dividerHeight="1dp" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="2">
<Button
android:id="@+id/custser_delcomplete"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:background="@drawable/btn_orange"
android:paddingLeft="33dp"
android:paddingRight="33dp"
android:text="删除"
android:textColor="@color/white"
android:textSize="22sp"
android:visibility="gone" />
<ImageView
android:id="@+id/custser_add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginRight="22dp"
android:background="@mipmap/add" />
</RelativeLayout>
</LinearLayout>
.java文件
public class CustSerActivity extends BaseActivity implements View.OnClickListener {
private ListView lv;
private TextView sum;
private List<String> list;
private List<CustserBean> listCustser;
private CustSerAdapter adapter;
public boolean mIsFromItem = false;//监听来源
private CustSerCheckAdapter checkAdapter;//带判断的适配器
private boolean isDel;
private CheckBox mMainCkb;
private Button delComplete;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
baseapp.addActivity(this);
setContentView(R.layout.activity_cust_ser);
initView();
}
private void initView() {
mMainCkb = (CheckBox) findViewById(R.id.ckb_main);
mMainCkb.setOnCheckedChangeListener(checkChange);
delComplete = (Button) findViewById(R.id.custser_delcomplete);
delComplete.setOnClickListener(this);
findViewById(R.id.custser).setOnClickListener(this);
findViewById(R.id.custser_del).setOnClickListener(this);
findViewById(R.id.custser_add).setOnClickListener(this);
sum = (TextView) findViewById(R.id.custser_sum);
lv = (ListView) findViewById(R.id.custser_lv);
}
@Override
protected void onResume() {
super.onResume();
initData();
}
/**
* 初始化数据
*/
private void initData() {
/*向数据库读取数据*/
String username = spUser.getString(SpKey.UserName);
List<CustserBean> custser = managerDb.getCustser(username);
list = new ArrayList<>();
listCustser = new ArrayList<>();
for (CustserBean custserBean : custser) {
list.add(custserBean.getName());
custserBean.setIscheck(false);
listCustser.add(custserBean);
}
sum.setText(list.size() + "");
/*初始化两个适配器*/
adapter = new CustSerAdapter(this, list);
checkAdapter = new CustSerCheckAdapter(listCustser, this, allCheckListener);
if (isDel) {
lv.setAdapter(checkAdapter);
} else {
lv.setAdapter(adapter);
}
}
/*初始化listView*/
private void initLv(ListView lv, List<String> list) {
lv.setAdapter(adapter);
adapter.setData(list);
adapter.notifyDataSetChanged();
}
/*初始化带check的listView*/
private void initlvCheck(ListView lv, List<CustserBean> list) {
lv.setAdapter(checkAdapter);
checkAdapter.setData(list);
checkAdapter.notifyDataSetChanged();
}
/*全选的回调监听*/
AllCheckListener allCheckListener = new AllCheckListener() {
@Override
public void onCheckedChanged(boolean b) {
Logs.v("110 " + b + " " + mMainCkb.isChecked());
//根据不同的情况对maincheckbox做处理
if (!b && !mMainCkb.isChecked()) {
return;
} else if (!b && mMainCkb.isChecked()) {
mIsFromItem = true;
mMainCkb.setChecked(false);
} else if (b && !mMainCkb.isChecked()) {//
mIsFromItem = true;
mMainCkb.setChecked(true);
} else {
return;
}
}
};
/*mMainCkb的选择监听*/
CompoundButton.OnCheckedChangeListener checkChange = new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
//当监听来源为点击item改变maincbk状态时不在监听改变,防止死循环
Logs.d("mIsFromItem状态:" + mIsFromItem);
if (mIsFromItem) {
mIsFromItem = false;
return;
}
//改变数据
for (CustserBean model : listCustser) {
model.setIscheck(isChecked);
}
//刷新listview
checkAdapter.notifyDataSetChanged();
}
};
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.custser:
baseapp.finishActivity();
break;
case R.id.custser_del:
isDel();
break;
case R.id.custser_add:
SmallUtil.getActivity(CustSerActivity.this, CustSerNewActivity.class);
break;
case R.id.custser_delcomplete:
delComplete();
break;
}
}
/*删除后的处理*/
private void delComplete() {
String username = spUser.getString(SpKey.UserName);
for (CustserBean custserBean : listCustser) {
Logs.d("164 " + custserBean.ischeck());
if (custserBean.ischeck()) {
managerDb.custserClean(username, custserBean.getName());
}
}
mMainCkb.setChecked(false);
initData();
}
/*判断是否点击了删除按钮*/
private void isDel() {
if (isDel) {
delComplete.setVisibility(View.GONE);
mMainCkb.setVisibility(View.GONE);
isDel = false;
initLv(lv, list);
} else {
delComplete.setVisibility(View.VISIBLE);
mMainCkb.setVisibility(View.VISIBLE);
isDel = true;
initlvCheck(lv, listCustser);
}
}
}
CustSerCheckAdapter
/**
* Description: 有复选框售后人员的适配器
* AUTHOR: Champion Dragon
* created at 2018/3/22
**/
public class CustSerCheckAdapter extends BaseAdapter {
private List<CustserBean> list;
private Context context;
private AllCheckListener allCheckListener;
public CustSerCheckAdapter(List<CustserBean> list, Context context, AllCheckListener allCheckListener) {
this.list = list;
this.context = context;
this.allCheckListener = allCheckListener;
}
@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) {
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(
R.layout.item_custsercheck, null);
}
TextView name = ViewHolderUtil.get(convertView, R.id.custser_name);
final CheckBox checkBox = ViewHolderUtil.get(convertView, R.id.custser_check);
CustserBean custserBean = list.get(position);
checkBox.setChecked(custserBean.ischeck());
name.setText(custserBean.getName());
View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
if (checkBox.isChecked()) {
checkBox.setChecked(false);
list.get(position).setIscheck(false);
Logs.w(list.get(position).ischeck() + " 是否设置勾选68");
} else {
checkBox.setChecked(true);
list.get(position).setIscheck(true);
Logs.w(list.get(position).ischeck() + " 是否设置勾选72");
}
//监听每个item,若所有checkbox都为选中状态则更改main的全选checkbox状态
for (CustserBean custserBean1 : list) {
if (!custserBean1.ischeck()) {
allCheckListener.onCheckedChanged(false);
return;
}
}
allCheckListener.onCheckedChanged(true);
}
};
name.setOnClickListener(listener);
// convertView.setOnClickListener(listener);
// checkBox.setOnClickListener(listener);
return convertView;
}
/**
* 添加刷新的数据
*/
public void setData(List<CustserBean> scanResults) {
list = scanResults;
}
}
AllCheckListener
/**
* Description: 对item导致maincheckbox改变做监听
* AUTHOR: Champion Dragon
* created at 2018/3/22
**/
public interface AllCheckListener {
void onCheckedChanged(boolean b);
}
效果图: