Я не получаю правильные результаты поиска элемента в списке - PullRequest
0 голосов
/ 05 июня 2019

Настройка адаптера в 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;
    }

Я использую этот пользовательский просмотр списка и добавляю поисковый запрос в просмотр списка, но я не получаю вывод, но когда я использую простой просмотр списка без пользовательского ввода, я получаю идеальный вывод,Можете ли вы проверить код и предоставить мне решение, где проблема в моем коде

пользовательский макет 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>

Я ищу элементы, но он показывает только одинэлемент, который уже находится сверху, если не совпадает, отображается пустым.поэтому, пожалуйста, скажите мне, в чем проблема

1 Ответ

1 голос
/ 06 июня 2019

Посмотрите на этот код

** О вашей активности в сфере утилизации ** 1) создать текст редактирования 2) узнать идентификатор 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();
}

Надеюсь, этот ответ поможет вам ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...