带有CheckedTextView和图标的ListView检查Android 2.x设备上的错误项目

带有CheckedTextView和图标的ListView检查Android 2.x设备上的错误项目,android,listview,checkedtextview,Android,Listview,Checkedtextview,我有一个列表视图,其中有一组项目,包括图标、文本和复选框 列表行的布局如下所示: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" ...> <ImageView android:id="@+id/list_icon" ... /> &l

我有一个列表视图,其中有一组项目,包括图标、文本和复选框

列表行的布局如下所示:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
...>

    <ImageView
        android:id="@+id/list_icon"
        ... />

    <CheckedTextView
        android:id="@android:id/text1"        
            android:checkMark="?android:attr/listChoiceIndicatorMultiple"
    ... />

</LinearLayout>
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    CheckedTextView ctv = (CheckedTextView) view.findViewById(android.R.id.text1);
    if (ctv != null) {
        ctv.setChecked(!ctv.isChecked());
    }
}    

该列表使用以下方式填写:

ArrayList<HashMap<String, ?>> datalist = new ArrayList<HashMap<String, ?>>();
for (Item item : mItems) {
        HashMap<String, Object> data = new HashMap<String, Object>();
        data.put("info", item.info);
        data.put("icon", item.icon);
        datalist.add(data);
}

ListAdapter adapter = new SimpleAdapter(getContext(), datalist, R.layout.list_item,
            new String[] { "info", "icon" }, new int[] { android.R.id.text1, R.id.list_icon });

list.setAdapter(adapter);
list.setItemsCanFocus(false);
list.setOnItemClickListener(this);
ArrayList datalist=new ArrayList();
用于(项目:mItems){
HashMap数据=新的HashMap();
数据放置(“信息”,项目信息);
data.put(“图标”,item.icon);
datalist.add(数据);
}
ListAdapter=new SimpleAdapter(getContext(),datalist,R.layout.list_项,
新字符串[]{“info”,“icon”},新int[]{android.R.id.text1,R.id.list_icon});
list.setAdapter(适配器);
list.setItemsCanFocus(false);
list.setOnItemClickListener(此);
onItemClick处理程序如下所示:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
...>

    <ImageView
        android:id="@+id/list_icon"
        ... />

    <CheckedTextView
        android:id="@android:id/text1"        
            android:checkMark="?android:attr/listChoiceIndicatorMultiple"
    ... />

</LinearLayout>
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    CheckedTextView ctv = (CheckedTextView) view.findViewById(android.R.id.text1);
    if (ctv != null) {
        ctv.setChecked(!ctv.isChecked());
    }
}    
public void onItemClick(AdapterView父视图、视图视图、整型位置、长id){
CheckedTextView ctv=(CheckedTextView)view.findViewById(android.R.id.text1);
如果(ctv!=null){
ctv.setChecked(!ctv.isChecked());
}
}    
在Android 2.x设备上,当我用三个列表项填充应用程序并单击最后一项时 第一个项目将被选中,如果我再次单击,最后一个项目将被选中。 每次我点击一个项目时,列表会再次填满,而且顺序似乎会改变

我在onItemClick处理程序中检查了CheckedTextView交付的是实际的视图 我单击的项目的字符串,但仍会检查另一个项目

知道这是怎么回事吗? 我假设这可能是由适配器中的共享视图引起的。。。(转换视图)。如果是的话 我怎样才能回避这个问题

提前谢谢