我正在使用单一选择模式处理自定义列表视图。我已经按照下面的教程成功实现了它。
我有一个用例,我想设置一个特定的项目是默认情况下要检查的列表, 我试图在适配器的require位置执行setChecked(true),但它没有用。 任何人都可以帮助我实现它。
提前致谢。
答案 0 :(得分:0)
这source说:
基本上,单选ListView期望您提供的小部件实现Checkable接口。 LinearLayout等人并没有。因此,您需要创建一个继承LinearLayout(或您想要用于项目的任何布局)的自定义布局,并实现必要的界面。
从此source开始,您可以使用Activity
中的自定义适配器进行设置:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// set the choice mode
final ListView list = getListView();
list.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
// custom adapter
list.setAdapter(new ArrayAdapter<String>(this, R.layout.list_item,
R.id.title, text) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = super.getView(position, convertView, parent);
ImageView icon = (ImageView) v.findViewById(R.id.img);
if (list.isItemChecked(position)) {
icon.setImageResource(R.drawable.checked);
} else {
icon.setImageResource(R.drawable.unchecked);
}
return v;
}
});
}
但是这个版本有一些性能问题 - findViewById和setImageResource是相对耗时的操作,所以你应该考虑使用一些缓存。
希望它对你有所帮助。