I cannot select the correct row when using CheckedTextView in ListView

SimpleAdapter adapter = new SimpleAdapter(this, list, R.layout.contact_item, new String[] { "name" }, new int[] { R.id.name });
listView.setAdapter(adapter);
listView.setItemsCanFocus(false);
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
listView.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        CheckedTextView checkedTextView = (CheckedTextView) view.findViewById(R.id.name);
        checkedTextView.toggle();
        System.out.println(checkedTextView.getText().toString());
    }
});

So far, I click the first item in the ListView, but CheckedTextView will select the last item in the ListView, and System.out is correct. I don’t know why, and how can I fix it?

+3
source share
1 answer

View, ListView, : View, , . , View, : , , , . setSelection , .

EDIT: , , .

listView.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        CheckedTextView checkedTextView = (CheckedTextView) view.findViewById(R.id.name);
        checkedTextView.toggle();
        System.out.println(checkedTextView.getText().toString());
        getListView().setSelection(position);
    }
});
0

All Articles