onCreate中的适配器设置
myAdapter = new MyAdapter(emp_list_activity.this,R.layout.checkable_list_layout,listview_array);
search_view_j.setOnQueryTextListener(this);
employee_list_View.setAdapter(myAdapter);
search_view_j.setOnQueryTextListener(this);
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
myAdapter.getFilter().filter(newText);
return false;
}
private class MyAdapter extends ArrayAdapter {
public MyAdapter(Context context, int resource, ArrayList<String> objects) {
super(context, resource, objects);
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View v = getLayoutInflater().inflate(R.layout.checkable_list_layout,null);
return v;
}
我正在使用此自定义列表视图,并在列表视图上添加了一个searview,但是我没有得到输出,但是当我使用没有自定义的简单列表视图时,我得到了完美的输出,请检查代码并向我提供解决方案我的代码中的问题
自定义布局xml文件checkablelistlayout.xml
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/RelativeLayout01"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#000000"
android:textSize="18dp"
android:layout_marginLeft="10dp"
android:layout_centerVertical="true"
android:layout_alignParentLeft="true"
android:id="@+id/list_tv"/>
</RelativeLayout>
我正在搜索项目,但如果不匹配,它将仅显示一个已经位于顶部的项目,显示为空白。所以请告诉我是什么问题
答案 0 :(得分:1)
看看这段代码
**在您的recyclerview活动中** 1)创建编辑文字 2)找出ID 3)添加addTextChangeListener
search_txt.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) {
}
@Override
public void afterTextChanged(Editable s) {
filter(s.toString());
}
});
4)添加方法
private void filter(String txt)
{
ArrayList<ModelClass> temList=new ArrayList<>();
for(ModelClass s:list)
{
if(s.getName().contains(txt))
{
temList.add(s);
}
}
adapter.filterList(temList); //call this method which is written in adapter class
}
5)在getItemCount()下面的适配器类写入方法中(用于刷新)
public void filterList(ArrayList<ModelClass> fliterNm)
{
this.data=fliterNm;
notifyDataSetChanged();
}
希望这个答案对您有帮助。