你可以得到相关ListView
的...
ListView listView = ((AlertDialog) dialog).getListView();
拥有列表视图,您可以将自己的适配器实现(例如MyAdapter
从 扩展ArrayAdapter
)附加到ListView
...
listView.setAdapter(
new MyAdapter(this, android.R.layout.simple_list_item_single_choice,
new String[] {"Option 1","Option 2","Option 3"}));
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int psn, long id) {
// just as an example: disable all choices
enabled = new boolean[] {false, false, false};
}
});
...以您需要的方式覆盖该boolean isEnabled(int position)
方法:
// maintain your enabled and disabled status here
static boolean enabled[] = {true, true, true};
// own adapter relying overriding isEnabled
public class MyAdapter extends ArrayAdapter<String> {
public MyAdapter(Context context, int textViewResourceId, String[] objects) {
super(context, textViewResourceId, objects);
}
@Override
public boolean isEnabled(int n) {
return enabled[n];
}
}
在为您更改条件/标志后,isEnabled
您可能需要调用...
listView.getAdapter().notifyDataSetChanged();
...为了重绘列表视图(尽管在我的测试代码中似乎没有必要)。simple_list_item_single_choice
您可以通过更改为 或其他方式来控制列表视图项样式simple_list_item_multiple_choice
(检查代码完成或创建自己的布局可选)。
希望这会有所帮助......干杯!