调用:
public class Messages extends BaseAvtivity implements View.OnClickListener {
private ListView messages;
private ArrayList list;
private listAdapter_message mAdapter;
private LinearLayout ll_message_delete;
private TextView message_delete;
private int selected_num;
private int[] selected;
private TitleBuilder titleBuilder;
private View title01,title02;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_messages);
title01 = findViewById(R.id.message_title1);
title02 = findViewById(R.id.message_title2);
setBar();
init();
mAdapter = new listAdapter_message(getApplicationContext(),list);
messages.setAdapter(mAdapter);
mAdapter.setChecked(new listAdapter_message.onChecked() {
@Override
public void CheckedChanged(int position,boolean isChecked) {
if (isChecked){
if (selected_num < mAdapter.getCount()){
selected_num++;
}
selected[position] = 101;
if (selected_num == mAdapter.getCount()){
titleBuilder.setRightText("全不选");
titleBuilder.setTitle("已选择"+mAdapter.getCount()+"个");
mAdapter.allcheck = true;
}else {
titleBuilder.setTitle("已选择"+selected_num+"个");
}
}else {
if (selected_num > 0){
selected_num--;
}
selected[position] = 0;
titleBuilder.setRightText("全选");
if (selected_num == 0){
titleBuilder.setTitle("选择消息");
}else {
titleBuilder.setTitle("已选择"+selected_num+"个");
}
mAdapter.allcheck = false;
}
}
});
messages.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView> parent, View view, int position, long id) {
//点击Item设置check的点击
CheckBox checkBox = (CheckBox) view.findViewById(R.id.message_checkbox);
if (checkBox.isChecked()){
checkBox.setChecked(false);
}else {
checkBox.setChecked(true);
}
}
});
}
private void init(){
messages = (ListView) findViewById(R.id.messages_listview);
ll_message_delete = (LinearLayout) findViewById(R.id.ll_message_delete);
message_delete = (TextView) findViewById(R.id.message_delete);
list = new ArrayList();
list.add(new messageData("新消息1","2016/10/27 10:25:16"));
list.add(new messageData("新消息2","2016/10/28 16:35:30"));
list.add(new messageData("新消息3","2016/10/29 09:45:15"));
list.add(new messageData("新消息4","2016/10/29 11:25:38"));
selected = new int[list.size()];
message_delete.setOnClickListener(this);
}
public void setBar() {
new TitleBuilder(title01)
.setTitle("我的消息")
.setLeftImage(R.drawable.back_white)
.setLeftButtonOnListenner(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
})
.setRightImage(R.drawable.revise)
.setRightButtonOnListenner(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mAdapter.getCount() == 0){
ToastUtils.showToast(getApplicationContext(),"无消息",Toast.LENGTH_SHORT);
}else {
title01.setVisibility(View.GONE);
title02.setVisibility(View.VISIBLE);
titleBuilder = new TitleBuilder(title02);
setTitle();
ll_message_delete.setVisibility(View.VISIBLE);
mAdapter.ischeck = true;
mAdapter.notifyDataSetChanged();
}
}
});
}
private void setTitle(){
titleBuilder.setViewVisibilityGONE()
.setLeftText("取消")
.setRightText("全选")
.setTitle("选择消息")
.setLeftTextOnListenner(new View.OnClickListener() {
@Override
public void onClick(View v) {
title02.setVisibility(View.GONE);
title01.setVisibility(View.VISIBLE);
setBar();
fadedeltetebtn();
}
})
.setRightTextOnListenner(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mAdapter.allcheck){
titleBuilder.setRightText("全选");
titleBuilder.setTitle("选择消息");
mAdapter.allcheck = false;
}else {
titleBuilder.setRightText("全不选");
titleBuilder.setTitle("已选择"+mAdapter.getCount()+"个");
mAdapter.allcheck = true;
}
mAdapter.notifyDataSetChanged();
}
});
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.message_delete:
if (selected_num == 0){
ToastUtils.showToast(getApplicationContext(),"请选择",Toast.LENGTH_SHORT);
break;
}
if (mAdapter.allcheck){
mAdapter.deleteAllItem();
}else {
mAdapter.deleteItem(selected);
}
title02.setVisibility(View.GONE);
title01.setVisibility(View.VISIBLE);
setBar();
fadedeltetebtn();
break;
default:
break;
}
}
private void fadedeltetebtn(){
mAdapter.ischeck = false;
mAdapter.allcheck = false;
ll_message_delete.setVisibility(View.GONE);
selected_num = 0;
for (int i = 0;i < selected.length; i++){
selected[i] = 0;
}
mAdapter.notifyDataSetChanged();
}
@Override
protected void onDestroy() {
super.onDestroy();
mAdapter.ischeck = false;
mAdapter.allcheck = false;
ll_message_delete.setVisibility(View.GONE);
mAdapter.notifyDataSetChanged();
}
}
package com.example.cuboo.mlcircles.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.CompoundButton;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.example.cuboo.mlcircles.DataClass.Data_Map;
import com.example.cuboo.mlcircles.DataClass.messageData;
import com.example.cuboo.mlcircles.R;
import com.example.cuboo.mlcircles.utils.ToastUtils;
import java.util.List;
/**
* Created by cuboo on 2016/10/21.
*/
public class listAdapter_message extends BaseAdapter {
private Context context;
private List list;
public static boolean ischeck;
public static boolean allcheck;
private onChecked checked;
public void setChecked(onChecked checked) {
this.checked = checked;
}
public listAdapter_message(Context context, List list){
this.context = context;
this.list = list;
}
@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) {
//获得每个item
messageData data_map = (messageData) list.get(position);
ViewHolder viewHolder = null;
if (convertView == null){
//实例化对象
convertView = LayoutInflater.from(context).inflate(R.layout.item_messages,null);
viewHolder = new ViewHolder();
viewHolder.title = (TextView) convertView.findViewById(R.id.message_item_text);
viewHolder.time = (TextView) convertView.findViewById(R.id.message_item_time);
viewHolder.checkBox = (CheckBox) convertView.findViewById(R.id.message_checkbox);
convertView.setTag(viewHolder);
}else {
viewHolder = (ViewHolder)convertView.getTag();
}
//设置控件内容
viewHolder.title.setText(data_map.getmTitle());
viewHolder.time.setText(data_map.getmTime());
if (ischeck){
if (allcheck){
viewHolder.checkBox.setChecked(true);
}else {
viewHolder.checkBox.setChecked(false);
}
viewHolder.checkBox.setVisibility(View.VISIBLE);
viewHolder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (checked != null){
//回调方法传参数
checked.CheckedChanged(position,isChecked);
}
}
});
}else {
viewHolder.checkBox.setChecked(false);
viewHolder.checkBox.setVisibility(View.GONE);
}
return convertView;
}
public class ViewHolder{
TextView title;
TextView time;
CheckBox checkBox;
}
public static interface onChecked{
public void CheckedChanged(int position,boolean isChecked);
}
//删除单个item
public void deleteItem(int[] index){
for (int i = list.size()-1; i >= 0;i--){
if (index[i] == 101){
list.remove(i);
notifyDataSetChanged();
index[i] = 0;
}
}
}
//删除全部item
public void deleteAllItem(){
list.clear();
notifyDataSetChanged();
}
}
xml: