Android ListView And GridView 单选模式

Android ListView And GridView 单选模式

Android ListView And GridView 单选模式:


自定义TextView 使 ClassItemTextView 具有Checkable 功能 相当于 CheckBox

public class ClassItemTextView extends TextView implements Checkable {
    private boolean mChecked;
    public ClassItemTextView(Context context) {
        super(context);
    }

    public ClassItemTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public ClassItemTextView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    public void setChecked(boolean checked) {
        mChecked = checked;
        setBackgroundDrawable(checked ? getResources().getDrawable(R.drawable.select_item): getResources().getDrawable(R.drawable.default_item));//当选中时呈现绿色
        setTextColor(checked? Color.WHITE:Color.parseColor("#7D7D7D"));
    }

    @Override
    public boolean isChecked() {
        return mChecked;
    }

    @Override
    public void toggle() {
        setChecked(!mChecked);
    }
}

Adapter 的写法


    /**
     * chooseAdapter
     */
    class ChooseClassAdapter extends BaseAdapter {
        private List<Boolean> booleanList;
        private String[] array;

        public ChooseClassAdapter(String[] array) {
            booleanList = new ArrayList<>();
            this.array = array;
        }

        @Override
        public int getCount() {
            return array.length;
        }

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

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

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ViewHolder viewHolder;
            if (convertView == null) {
                convertView = View.inflate(SingleActivity.this, R.layout.choose_class_imte, null);
                viewHolder = new ViewHolder();
                viewHolder.classText = (ClassItemTextView) convertView.findViewById(R.id.class_item_choose);
                convertView.setTag(viewHolder);
            } else {
                viewHolder = (ViewHolder) convertView.getTag();
            }
            for (int i = 0; i < getCount(); i++) {
                if (i == 0) {
                    booleanList.add(true);
                } else {
                    booleanList.add(false);
                }

            }
            viewHolder.classText.setChecked(booleanList.get(position));
            viewHolder.classText.setText(array[position].toString());

            return convertView;
        }

        /**
         * 匹配选择false
         *
         * @param position
         */
        public void selectPosition(int position) {
            for (int i = 0; i < getCount(); i++) {
                if (position == i) {// 设置已选位置 (cast)
                    booleanList.set(i, true);
                } else {
                    booleanList.set(i, false);
                }
            }
        }

        class ViewHolder {
            private ClassItemTextView classText;
        }
    }

调用方式:


public class SingleActivity extends AppCompatActivity {
    private GridView mListData;
    private String chooseSelect;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        String[] array = new String[]{"高一", "高二", "高三", "一年级", "二年级", "三年级", "四年级", "五年级", "六年级", "七年级", "八年级", "九年级"};
        chooseSelect = "高一";
        mListData = (GridView)findViewById(R.id.nianji_list);
        final ChooseClassAdapter chooseClassAdapter = new ChooseClassAdapter(array);
        mListData.setAdapter(chooseClassAdapter);
        mListData.setChoiceMode(mListData.CHOICE_MODE_SINGLE);
        mListData.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                if (ListView.CHOICE_MODE_SINGLE == mListData.getChoiceMode()) {
                    String str = (String) mListData.getItemAtPosition(position);
                    chooseClassAdapter.selectPosition(mListData.getCheckedItemPosition());
            /*        ToastUtils.showMessage(mListData.getCheckedItemPosition() + "----" + str);*/
                    chooseClassAdapter.notifyDataSetChanged();
                    chooseSelect = str;
                    Toast.makeText(SingleActivity.this,chooseSelect+ "", Toast.LENGTH_SHORT).show();
                }
            }
        });
    }

效果如下:
这里写图片描述

链接http://download.csdn.net/download/bxllove/10219004


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值