listview中CheckBox的监听回调

调用:


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();
    }
}

adapter:

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:



    
    
    
    

    
    
        
    


listview中CheckBox的监听回调_第1张图片


xml:



    
        
        
        
    

selector:



    
    
    
    


你可能感兴趣的:(Android)