我有一个附加到数组适配器的简单列表视图。我的列表是多选复选框列表。
首先,我只使用android CheckedTextView作为我的列表文本视图:
public static class MyAdapter extends ArrayAdapter<String> {
private List<String> items;
public MyAdapter(Context context, List<String> items) {
super(context, android.R.layout.simple_list_item_multiple_choice, items);
this.items = items;
}
...
当我单击一行选中复选框时,这非常有效。
我的观点变得更加复杂,我需要为列表中的每个项目添加进度条:
list_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyleSmall"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:indeterminate="true"
android:visibility="visible" />
<CheckedTextView
android:id="@+id/checkedTextView"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeightSmall"
android:checkMark="?android:attr/listChoiceIndicatorMultiple"
android:gravity="center_vertical"
android:paddingLeft="6dip"
android:paddingRight="6dip"
android:text="Rivers"
android:textAppearance="?android:attr/textAppearanceMedium" />
</LinearLayout>
所以我的数组适配器现在看起来像:
public static class MyAdapter extends ArrayAdapter<String> {
private List<String> items;
public MyAdapter(Context context, List<String> items) {
super(context, R.layout.list_item, R.id.checkedTextView, items);
this.items = items;
}
通过简单的更改即可使用我自己的布局&#34; R.layout.list_item&#34;,当我点击一行时,其复选框不会被选中。当我使用androids&#34; android.R.layout.simple_list_item_multiple_choice&#34;布局?
即。某处android处理了click事件并检查了该框,但我所做的只是更改布局,现在它不起作用。我想通过使用布局我可以免费获得一些东西。我可以设置不同的布局,以便仍然可以免费检查点击吗?
答案 0 :(得分:1)
神奇的是CheckedTextView实现了Checkable。如果您希望自己的列表项视图适用于所有点击/检查事件,则需要您的视图来实现它。
回答w /示例: http://tokudu.com/post/50023900640/android-checkable-linear-layout