在使用Cursor的recyclerview中使用serachview后如何点击正确的项目?

时间:2016-09-02 16:04:58

标签: android cursor android-recyclerview searchview

我在recyclerview中使用searchview。我使用Cursor处理所有数据,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);
        }
    }

0 个答案:

没有答案