Listview游标适配器,总是得到onClicked的第一项

时间:2013-12-10 02:51:48

标签: android listview android-listview simplecursoradapter android-adapter

我使用简单的游标适配器为listview提供了这段代码:

final SimpleCursorAdapter adapter = new SimpleCursorAdapter(getActivity(), R.layout.textonly_listview_item, cursor, from, to);
listview.setAdapter(adapter);
listview.setChoiceMode(ListView.CHOICE_MODE_SINGLE);

listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        Cursor item = (Cursor) parent.getItemAtPosition(position);
        adapter.notifyDataSetChanged();
        view.setSelected(true);
        G.t(getActivity(), "Now working with category: " + item.getName());
    }
});

当点击任何一个单元格时,它总是得到列表视图中的第一个项目或最顶层的项目,有人可以告诉我哪里错了吗?

Screenshoot sample

2 个答案:

答案 0 :(得分:1)

你试过这个吗?

Cursor item = adapter.getItem(position);
view.setSelected(true);
adapter.notifyDataSetChanged();

答案 1 :(得分:1)

正如评论中所提到的,您应该将adapter.notifyDataSetChanged();移到最后。这就是发生这种情况的可能原因。