天天看点

ListView的条目单选和多选

对 ListView 进行单选和多选操作的时候  首先要进行ListView的模式设置

if (isOne) {
    mBtn.setText("单选");
    mListView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);

} else {
    mBtn.setText("多选");
    mListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
}      
package com.aegis.testlist;

import android.content.Context;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity implements View.OnClickListener, AdapterView.OnItemClickListener {

    private ListView mListView;
    private Button mBtn;
    private boolean isOne = false;
    private mySelectAdapter adapter;
    private List<String> datas = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        for (int i = 0; i < 20; i++) {
            datas.add("数据" + i);
        }
        initView();
    }

    private void initView() {
        mListView = (ListView) findViewById(R.id.ListView);
        mBtn = (Button) findViewById(R.id.Btn);
        mBtn.setOnClickListener(this);
        if (isOne) {
            mBtn.setText("单选");
            mListView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);

        } else {
            mBtn.setText("多选");
            mListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
        }
        adapter = new mySelectAdapter(this,datas);
        mListView.setAdapter(adapter);
        mListView.setOnItemClickListener(this);
        mListView.setScrollbarFadingEnabled(true);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.Btn:
                break;
        }
    }

    class mySelectAdapter extends BaseAdapter {
        private List<String> list = new ArrayList<>();
        private int selectedPosition = -1;// 选中的位置


        private Context ctx;
        private List<String> lists;

        public mySelectAdapter(Context context, List<String> Lists) {
            ctx = context;
            lists = Lists;
            for (int i = 0; i < lists.size(); i++) {

            }
        }


        public void setSelectedPosition(int position) {
            selectedPosition = position;
        }

        @Override
        public int getCount() {

            return datas.size();
        }

        @Override
        public Object getItem(int position) {
            return position;
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getView(final int position, View convertView, ViewGroup parent) {
            SelectHolder holder = null;

            if (convertView == null) {
                convertView = View.inflate(ctx, R.layout.item_chatdialog, null);
                holder = new SelectHolder(convertView);
                convertView.setTag(holder);
            } else {
                holder = (SelectHolder) convertView.getTag();
            }
            String data = datas.get(position);
            holder.mPosition.setText(position + 1 + "");
            holder.mContent.setText(data);
            if (isOne) {
                if (position % 2 == 0) {
                    if (selectedPosition == position) {
                        convertView.setSelected(true);
                        convertView.setPressed(true);
                        holder.mContent.setTextColor(getResources().getColor(R.color.dialog_select_yes));
                        holder.mPosition.setTextColor(getResources().getColor(R.color.white));
                        holder.mPosition.setBackgroundResource(R.mipmap.shuzidiwen1);

                    } else {
                        convertView.setSelected(false);
                        convertView.setPressed(false);
                        holder.mContent.setTextColor(getResources().getColor(R.color.dialog_select_yes));
                        holder.mPosition.setTextColor(getResources().getColor(R.color.dialog_choose_yes));
                        holder.mPosition.setBackgroundResource(R.mipmap.shuzidiwen2);

                    }
                } else {
                    if (selectedPosition == position) {
                        convertView.setSelected(true);
                        convertView.setPressed(true);
                        holder.mContent.setTextColor(getResources().getColor(R.color.dialog_select_yes));
                        holder.mPosition.setTextColor(getResources().getColor(R.color.white));
                        holder.mPosition.setBackgroundResource(R.mipmap.shuzidiwen1);

                    } else {
                        convertView.setSelected(false);
                        convertView.setPressed(false);
                        holder.mContent.setTextColor(getResources().getColor(R.color.dialog_select_yes));
                        holder.mPosition.setTextColor(getResources().getColor(R.color.dialog_choose_yes));
                        holder.mPosition.setBackgroundResource(R.mipmap.shuzidiwen2);

                    }
                }

            } else {
                if (mListView.isItemChecked(position)) {
                    holder.mContent.setTextColor(getResources().getColor(R.color.dialog_select_yes));
                    holder.mPosition.setTextColor(getResources().getColor(R.color.white));
                    holder.mPosition.setBackgroundResource(R.mipmap.shuzidiwen1);

                } else {
                    holder.mContent.setTextColor(getResources().getColor(R.color.dialog_select_yes));
                    holder.mPosition.setTextColor(getResources().getColor(R.color.dialog_choose_yes));
                    holder.mPosition.setBackgroundResource(R.mipmap.shuzidiwen2);


                }
            }


            return convertView;
        }

    }

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        if (isOne) {
            adapter.setSelectedPosition(position);
            adapter.notifyDataSetInvalidated();
        } else {
            adapter.notifyDataSetChanged();
        }
    }

    class SelectHolder {
        public TextView mPosition, mContent;
        public LinearLayout mLayout;

        public SelectHolder(View convertView) {
            this.mPosition = (TextView) convertView.findViewById(R.id.item_chatDialog_position);
            this.mContent = (TextView) convertView.findViewById(R.id.item_chatDialog_content);
            this.mLayout = (LinearLayout) convertView.findViewById(R.id.item_chatDialog_layout);
        }
    }

}
      

继续阅读