我在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);
}
}