Как использовать SearchView с Custom ArrayAdapter и ListView с вложенными элементами - PullRequest
0 голосов
/ 04 декабря 2018

Я добавил SearchView к ActionBar для поиска элементов в ListView.Я создал свой ListView.Но когда я отлаживаю приложение и что-то ищу, ничего не отображается.В какой части я допустил ошибку?Кто-нибудь может мне помочь?

XML-код ListView

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <TextView
        android:id="@+id/txtKodu"
        android:layout_width="257dp"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:layout_marginStart="26dp"
        android:layout_marginTop="11dp"
        android:text="Kodu"
        android:textSize="18sp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/txtAciklama"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignStart="@+id/txtKodu"
        android:layout_alignParentTop="true"
        android:layout_marginStart="0dp"
        android:layout_marginTop="48dp"
        android:layout_marginBottom="5dp"
        android:text="Açıklama"
        android:textSize="16sp" />

</RelativeLayout>

Вот мой класс адаптера пользовательского списка

открытый класс ListAdapter расширяет ArrayAdapter реализует Filterable{

ListClass [] kayitliste;
int resource;

public ListAdapter(Context context, int resource, ListClass[] kayitliste) {
    super(context, resource, kayitliste);

    this.resource = resource;
    this.kayitliste = kayitliste;
}

public ListClass[] getKayitliste() {
    return kayitliste;
}

public void setKayitliste(ListClass[] kayitliste) {
    this.kayitliste = kayitliste;
}

public int getResource() {
    return resource;
}

public void setResource(int resource) {
    this.resource = resource;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
     View satir;
    LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    satir  = inflater.inflate(resource , null);

    TextView kodu , aciklama;
    kodu = (TextView) satir.findViewById(R.id.txtKodu);
    aciklama = (TextView) satir.findViewById(R.id.txtAciklama);

    ListClass list = kayitliste[position];

    kodu.setText(list.getKodu());
    aciklama.setText(list.getAciklama());

    return satir;
}

Вот мой метод и реализация onCreate

  ListView lv;
    ListAdapter adapter;
    ListClass[] kayitlar;

    public void InitData(){

        kayitlar = new ListClass[]{
                new ListClass("1" , "Example Record1"),
                new ListClass("2" , "Example Record2"),
                new ListClass("3" , "Example Record3"),
                new ListClass("4" , "Example Record4"),
                new ListClass("5" , "Example Record5"),
        };
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_servis_fisi);
        lv = (ListView) findViewById(R.id.lvGrid);
        InitData(); 
       adapter = new ListAdapter(this , R.layout.customlist , kayitlar);
        lv.setAdapter(adapter);

        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Intent intent = new Intent(ServisFisi.this , KayitDetay.class);
                startActivity(intent);
            }
        });
    }

А вот мой код в Activity.

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu_search , menu);
    MenuItem item = menu.findItem(R.id.menuSearch);
    SearchView searchView = (SearchView) item.getActionView();

    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String query) {
            return false;
        }

        @Override
        public boolean onQueryTextChange(String newText) {
            adapter.getFilter().filter(newText);
            return false;
        }
    });

    return super.onCreateOptionsMenu(menu);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...