Android 如何使用光标在recyclerview中使用serachview后单击正确的项目?

Android 如何使用光标在recyclerview中使用serachview后单击正确的项目?,android,cursor,android-recyclerview,searchview,Android,Cursor,Android Recyclerview,Searchview,我正在一个回收视图中使用searchview。我用光标处理所有数据,searchview运行良好,看起来一切正常。问题是,当我进行搜索并尝试单击该行时,我无法获得该行的正确数据。我得到了我之前进行搜索的行的数据。看来我找不到当前的正确位置 我想做的是,当我在搜索后出现的行中单击时,获取该行的正确数据 似乎当我显示searchview的数据时,recyclerview不会更新行的位置 提前谢谢 这是我的代码: searchiew.setOnQueryTextListener(new SearchV

我正在一个回收视图中使用searchview。我用光标处理所有数据,searchview运行良好,看起来一切正常。问题是,当我进行搜索并尝试单击该行时,我无法获得该行的正确数据。我得到了我之前进行搜索的行的数据。看来我找不到当前的正确位置

我想做的是,当我在搜索后出现的行中单击时,获取该行的正确数据

似乎当我显示searchview的数据时,recyclerview不会更新行的位置

提前谢谢

这是我的代码:

searchiew.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String query) {
                displayResults(query + "*");
                return false;
            }

            @Override
            public boolean onQueryTextChange(String newText) {
                if (!newText.isEmpty()){
                    displaySearchResults(newText);
                } else {
                    displayOldResults();
                }
                return false;
            }
        });

private void displayOldResults(){ //This is the results that I get when inflate the view in the first time
        mAdapter = new ListDataRecycler(getActivity(), cursor, this);
        mRecyclerView.setAdapter(mAdapter);
    }

    private void displaySearchResults(String query) {
        Cursor cursorSearch = helpher.searchByInputText((query != null ? query : "@@@@"));

        if (cursorSearch != null) {
            mAdapter = new ListDataRecycler(getActivity(), cursorSearch, this);
            mRecyclerView.setAdapter(mAdapter);

        }
    }
这是我点击的方法:

   @Override
    public void onRowClicked(View view, int position) {
        int idx = mRecyclerView.getChildPosition(view);

        if (actionMode != null) {
            myToggleSelection(idx);

            animatedContactPhoto(view);

            return;
        }else{
            Intent intent = new Intent(getActivity(), ConversationChat.class);
            Bundle extras = new Bundle();
            extras.putInt("position", mRecyclerView.getChildPosition(view));
            intent.putExtras(extras);
            startActivity(intent);
        }
    }

使用apter并查看其
getItemId
methodHi。你到底是什么意思?在onRowClicked方法中?你能给我一点这方面的代码吗?对getItemId(int position)进行重写也会得到同样的结果。不要使用apter并查看其
getItemId
methodHi。你到底是什么意思?在onRowClicked方法中?你能给我一点这方面的代码吗?对getItemId(int position)进行重写也会得到同样的结果。不工作