Android RecyclerView-像ListView一样使用键盘筛选项目
当在Android RecyclerView-像ListView一样使用键盘筛选项目,android,android-recyclerview,filter,Android,Android Recyclerview,Filter,当在ListView的适配器中实现Filterable时,在视图处于活动状态时按键盘上的键可以很好地过滤项目(底部有一个浮动的Filter小部件),但是对RecyclerView的适配器执行相同操作没有任何作用。在后一种情况下,筛选项目的唯一方法是使用替代方法,例如使用搜索视图。根据这里给出的各种答案,Filter是一个非常适合RecyclerView使用的小部件 例如,对于使用Android TV的用户来说,使用上述键盘过滤项目非常方便 PS:我不认为发布ListView和RecyclerVi
ListView
的适配器中实现Filterable
时,在视图处于活动状态时按键盘上的键可以很好地过滤项目(底部有一个浮动的Filter
小部件),但是对RecyclerView
的适配器执行相同操作没有任何作用。在后一种情况下,筛选项目的唯一方法是使用替代方法,例如使用搜索视图
。根据这里给出的各种答案,Filter
是一个非常适合RecyclerView
使用的小部件
例如,对于使用Android TV的用户来说,使用上述键盘过滤项目非常方便
PS:我不认为发布
ListView
和RecyclerView
之间的差异会有任何好处,但如果需要,我会在这两种方式中包括详细的实现。您是否尝试添加TextWatcher来搜索编辑文本
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
adapter.getFilter().filter(s);
}
@Override
public void afterTextChanged(Editable s) {
}
});
如果您想在recycler视图中筛选项目,只需在源列表上应用筛选器,并用筛选的项目重置适配器项目,然后调用
notifyDatasetChanged
@MohammadOmidvar抱歉,这不是我的意思。我知道如何筛选项目。这是关于RecyclerView
中似乎缺少的一个特定功能,EditText
究竟从何而来?该功能在ListView
中工作,没有任何EditText
或SearchView
(我已经在文章中说明过了),您只需按键盘上的键,即可自动调用adapter.getFilter()。过滤器(约束)
。如果您将EditText
与TextWatcher
一起使用,它将取而代之的是焦点,而按向上/向下按钮将不会聚焦列表项。