【发布时间】:2022-10-21 00:25:22
【问题描述】:
它工作正常,但是当我通过搜索视图搜索某些内容时,它按搜索关键字显示结果,工作正常。当我单击搜索结果时,它显示的位置不正确。有什么解决办法吗?我从一个星期开始就在尝试这个东西。
主要活动
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
final List<ModelClass>filteredList = new ArrayList<>();
@Override
public boolean onQueryTextSubmit(String query) {
if (query!=null){
getItemFromDb(query);
}
return true;
}
@Override
public boolean onQueryTextChange(String newText) {
if (newText!=null){
getItemFromDb(newText);
}else {
//when search view is empty then set all data to the adapter class
noteAdapter.setList(listData);
}
return true;
}
});
private void getItemFromDb(String query){
String searchText = "%"+query+"%";
final List<ModelClass>myList = new ArrayList<>(); //now it is empty
LiveData<List<ModelClass>>listLiveData = viewModel.getSearchData(searchText);
listLiveData.observe(this, new Observer<List<ModelClass>>() {
@Override
public void onChanged(List<ModelClass> modelClasses) {
myList.addAll(modelClasses);
noteAdapter.setList(myList);
recyclerView.setAdapter(noteAdapter);
}
});
}
道接口
@Dao
public interface NoteDao {
@Insert
void insert(ModelClass modelClass);
@Delete
void delete(ModelClass modelClass);
@Update
void update(ModelClass modelClass);
@Query("SELECT * FROM myNewNote")
LiveData<List<ModelClass>>getAllNote();
@Query("SELECT * FROM myNewNote WHERE title LIKE ( :searchQuery) ORDER BY id")
LiveData<List<ModelClass>> getSearchDatabase(final String searchQuery);
【问题讨论】:
-
你能分享一下你遇到的问题的截图吗?另外,为什么要将 recyclerview.setAdapter() 放在 livedata 观察的 onChanged 中。只需将其移至您在活动的 onCreate 中某处创建适配器对象的位置。这可能会解决您的问题
-
无法解决您的解决方案,我可以给您发送视频吗,这是一个屏幕录像机。