禁用复选框在简单的列表视图中多选?

时间:2014-08-20 21:00:43

标签: android eclipse listview checkbox

是否有办法在简单的列表视图多项选择中禁用复选框(防止该框被点击)?

我只是在我的xml布局中定义标准列表视图,设置为多选项,当用户选中一个框时,我想禁用/锁定选择(在onClick之后)。

我试过玩:theCheckBox.setClickable(false); 但不知道如何从我的简单列表视图中获取CheckBox?

任何想法?

感谢。

我的适配器很简单:

adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_multiple_choice, this.ingredientArray);
itemList.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
itemList.setAdapter(adapter);

1 个答案:

答案 0 :(得分:1)

您可以在匿名getView课程中覆盖ArrayAdapter,并在其中应用视图停用。

<强>样品:

ArrayAdapter adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_multiple_choice, this.ingredientArray){
        public View getView(int position, View convertView, ViewGroup parent) {
            final CheckedTextView ctv = (CheckedTextView)convertView.findViewById(android.R.id.text1);
            ctv.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    if(ctv.isChecked())
                        ctv.setClickable(false);
                }
            });
        };
    };
    itemList.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
    itemList.setAdapter(adapter);

编辑:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_multiple_choice, this.ingredientArray){
            public View getView(int position, View convertView, ViewGroup parent) {

                if(convertView == null)
                {
                    View v = getLayoutInflater().inflate(android.R.layout.simple_list_item_multiple_choice, null);

                    final CheckedTextView ctv = (CheckedTextView)v.findViewById(android.R.id.text1);
                    ctv.setText(ingredientArray[position]);

                    ctv.setOnClickListener(new OnClickListener() {

                        @Override
                        public void onClick(View v) {
                            if(!ctv.isChecked())
                            {
                                ctv.setChecked(true);
                            }
                        }

                    });
                    return v;
                }

                return convertView;
            };
        };