Как вставить вид поиска в расширяемый RecyclerView? - PullRequest
0 голосов
/ 30 марта 2020

Это код ExpandableRecyclerViewer . Я хочу добавить Search View для фильтрации песен и исполнителей, когда пользователь вводит название песни или певца. Я попытался добавить представление поиска в recyclerview и expandablelistview , но они не сработали. Может кто-нибудь, пожалуйста, дайте мне способ решить мою проблему?

Моя основная деятельность

package com.example.expandableview;

import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.annotation.SuppressLint;
import android.app.SearchManager;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.inputmethod.EditorInfo;
import android.widget.Filter;
import android.widget.Filterable;
import android.widget.SearchView;
import android.widget.TextView;


import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity  {
private RecyclerView recyclerView;
private SearchView search;
private SongAdapter adapter;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        recyclerView = findViewById(R.id.recyclerview);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));

        ArrayList<Singer>singers = new ArrayList<>();

        ArrayList<Song> shakirasong = new ArrayList<>();
        shakirasong.add(new Song("Hips Don't Lie"));
        shakirasong.add(new Song("Chantaje"));
        shakirasong.add(new Song("Locca"));
        shakirasong.add(new Song("Whenever Whenever"));
        shakirasong.add(new Song("Me Gusta"));

        Singer shakira = new Singer("Shakira", shakirasong);
        singers.add(shakira);

        ArrayList<Song> westlifesong = new ArrayList<>();
        westlifesong.add(new Song("My Love"));
        westlifesong.add(new Song("I Wanna Grow Old With You"));
        westlifesong.add(new Song("I Lay My Love On You"));
        westlifesong.add(new Song("Uptown Girl"));
        westlifesong.add(new Song("If I Let You Go"));

        Singer westlife = new Singer("Westlife", westlifesong);
        singers.add(westlife);

        SongAdapter adapter = new SongAdapter(singers);
        recyclerView.setAdapter(adapter);


   }


}

Мой адаптер

   package com.example.expandableview;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Filter;
import android.widget.Filterable;
import android.widget.TextView;

import com.thoughtbot.expandablerecyclerview.ExpandableRecyclerViewAdapter;
import com.thoughtbot.expandablerecyclerview.models.ExpandableGroup;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class SongAdapter extends ExpandableRecyclerViewAdapter<SingerViewHolder,SongViewHolder>  {


    public SongAdapter(List<?extends ExpandableGroup> groups) {

        super(groups);

    }



    @Override
    public SingerViewHolder onCreateGroupViewHolder(ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.expandable_recycleview_singer, parent, false);
        return new SingerViewHolder(v);
    }

    @Override
    public SongViewHolder onCreateChildViewHolder(ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.expandable_recyclerview_song, parent, false);
        return new SongViewHolder(v);
    }

    @Override
    public void onBindChildViewHolder(SongViewHolder holder, int flatPosition, ExpandableGroup group, int childIndex) {
        final Song song = (Song) group.getItems().get(childIndex);
        holder.bind(song);
    }

    @Override
    public void onBindGroupViewHolder(SingerViewHolder holder, int flatPosition, ExpandableGroup group) {
        final Singer singer = (Singer) group;
        holder.bind(singer);
    }








}

Я также использовал этот код для просмотра в поиске

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater=getMenuInflater();
        inflater.inflate(R.menu.example_menu,menu);
        MenuItem searchItem=menu.findItem(R.id.action_search);
        SearchView searchView=(SearchView) searchItem.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 true;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...