android - ListView和ArrayAdapter with simple_list_item_multiple_choice

时间:2011-03-27 01:36:36

标签: android listview android-arrayadapter multiple-choice

以下代码创建了ArrayAdapter,并使用CheckedTextView中的ListView.setItemChecked()更改了每个onResume()的状态。

这一切都很好。

有没有办法可以禁用(灰显)部分CheckedTextViews

我已尝试使用adapter.getView(position, null, listView),虽然这会返回CheckedTextView个对象,但将其设置为setclickable(false)却无效。我已经尝试更改其文本并更改状态,但它也没有做任何事情。

我怎样才能做到这一点?

以下是可以正常使用的代码:

adapter = new ArrayAdapter<String>(this, 
                android.R.layout.simple_list_item_multiple_choice, 
                getResources().getStringArray(R.array.mode_declarations_array));

    listView.setAdapter(adapter);       

    listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);

    String learningSettings = settings.getString(Constants.LEARNING_SETTINGS, null);

    int count = adapter.getCount();

    if (learningSettings != null ) {

        String[] values = learningSettings.split(",");

        for (int i = 0; i< values.length; i++) {

            boolean val = Boolean.parseBoolean(values[i]);

            listView.setItemChecked(i, val);

        }

    }else {
        for (int i = 0; i<count; ++i) {
            listView.setItemChecked(i, true);
        }
    }

1 个答案:

答案 0 :(得分:1)

创建自己的自定义适配器并覆盖isEnabled功能。

class MyAdapter extends ArrayAdapter<String> {

    public boolean areAllItemsEnabled() {
        return false;
    }

    public boolean isEnabled(int position) {
        // return false if position == position you want to disable
    }
}