Android studio recyclerview中的searchview没有';t在搜索后选择正确的位置

Android studio recyclerview中的searchview没有';t在搜索后选择正确的位置,android-studio,android-recyclerview,searchview,Android Studio,Android Recyclerview,Searchview,我发现很多人都在回答这个问题,很多人都为他们工作过,比如holder.setIsRecyclable(true)。然而,他们都没有为我工作。我似乎找不到。。。如果有人能帮助我,我将不胜感激。我认为这与我的过滤器或适配器有关。。我不太确定 这是我的活动 public class GenreActivity extends AppCompatActivity implements SearchView.OnQueryTextListener{ private RecyclerView mRecy

我发现很多人都在回答这个问题,很多人都为他们工作过,比如holder.setIsRecyclable(true)。然而,他们都没有为我工作。我似乎找不到。。。如果有人能帮助我,我将不胜感激。我认为这与我的过滤器或适配器有关。。我不太确定

这是我的活动

public class GenreActivity extends AppCompatActivity implements 
SearchView.OnQueryTextListener{

private RecyclerView mRecyclerView;
private AdapterRecyclerView mAdapter;
private RecyclerView.LayoutManager mLayoutManager;
private ArrayList<DifferentGenres> differentGenres;

@Override
protected void onCreate(Bundle savedInstanceStat) {
    super.onCreate(savedInstanceStat);
    setContentView(R.layout.activity_genre)

    //toolbar
    Toolbar toolbar = findViewById(R.id.toolBar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setTitle("Genre");


     differentGenreList();

     RecyclerLayoutAdapter();

     onClickGenre();

}


//methhod for clicking genre
public void onClickGenre(){

    mAdapter.setmOnItemClickListener(new 
AdapterRecyclerView.OnItemClickListener() {
        @Override
        public void onItemClick(int position) {
            GenreActivity.this.mAdapter.updateList(differentGenres);

            switch (position) {
                case 0:

            }
            Toast.makeText(getApplicationContext(),""+ 
differentGenres.get(position).getmGenre(), Toast.LENGTH_SHORT).show();
            Intent intent = new Intent(GenreActivity.this, 
SelectedGenre.class);
            startActivity(intent);
        }
    });
}

//building recycler view
public void RecyclerLayoutAdapter(){
    mRecyclerView = findViewById(R.id.recyclerView);
    mRecyclerView.setHasFixedSize(true);
    mLayoutManager = new LinearLayoutManager(this);
    mAdapter = new AdapterRecyclerView(differentGenres);

    mRecyclerView.setLayoutManager(mLayoutManager);
    mRecyclerView.setAdapter(mAdapter);

}

//arraylist for genres
public void differentGenreList(){
    differentGenres = new ArrayList<>();
    differentGenres.add(new DifferentGenres("Action"));
    differentGenres.add(new DifferentGenres("Adventure"));
    differentGenres.add(new DifferentGenres("Animation"));
    differentGenres.add(new DifferentGenres("Biography"));
    differentGenres.add(new DifferentGenres("Comedy"));
    differentGenres.add(new DifferentGenres("Crime"));
    differentGenres.add(new DifferentGenres("Drama"));
    differentGenres.add(new DifferentGenres("Family"));
    differentGenres.add(new DifferentGenres("Fantasy"));
    differentGenres.add(new DifferentGenres("History"));
    differentGenres.add(new DifferentGenres("Horror"));
    differentGenres.add(new DifferentGenres("Music"));
    differentGenres.add(new DifferentGenres("Musical"));
    differentGenres.add(new DifferentGenres("Mystery"));
    differentGenres.add(new DifferentGenres("Romance"));
    differentGenres.add(new DifferentGenres("Sport"));
    differentGenres.add(new DifferentGenres("Superhero"));
    differentGenres.add(new DifferentGenres("Thriller"));
    differentGenres.add(new DifferentGenres("War"));




}

//search icon
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.search, menu);
    MenuItem menuItem = menu.findItem(R.id.searchGenre);
    SearchView searchView = (SearchView) menuItem.getActionView();
    searchView.setOnQueryTextListener(this);
    return true;
}

//search filter
@Override
public boolean onQueryTextSubmit(String query) {
    return false;
}

@Override
public boolean onQueryTextChange(String newText) {

    String input = newText.toLowerCase();
    ArrayList<DifferentGenres> filtered = new ArrayList<>();

    for(DifferentGenres differentGenres : differentGenres){

if(differentGenres.getmGenre().toLowerCase().contains(
input.toLowerCase())){

            filtered.add(differentGenres);

        }


    }
    mAdapter.notifyDataSetChanged();

    mAdapter.updateList(filtered);
    return true;
  }

}
public类活动实现
SearchView.OnQueryTextListener{
私人回收视图mRecyclerView;
私人适配器RecyclerView mAdapter;
private RecyclerView.LayoutManager MLLayoutManager;
私有数组列表差异化;
@凌驾
创建时受保护的void(Bundle savedInstanceStat){
super.onCreate(savedInstanceStat);
setContentView(R.layout.activity_体裁)
//工具栏
Toolbar Toolbar=findviewbyd(R.id.Toolbar);
设置支持操作栏(工具栏);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setTitle(“流派”);
不同的专家();
RecyclerLayoutAdapter();
onClickGenre();
}
//点击体裁的方法
公共void onClickGenre(){
mAdapter.setMonitorItemClickListener(新建
AdapterRecyclView.OnItemClickListener(){
@凌驾
公共空间单击(内部位置){
GenreActivity.this.mAdapter.updateList(不同的genrest);
开关(位置){
案例0:
}
Toast.makeText(getApplicationContext(),“”+
differentGenres.get(position.getmGenre(),Toast.LENGTH_SHORT.show();
意向意向=新意向(genreactive.this,
SelectedGenre.class);
星触觉(意向);
}
});
}
//建筑回收视图
公共void回收器布局适配器(){
mRecyclerView=findViewById(R.id.recyclerView);
mRecyclerView.setHasFixedSize(true);
mLayoutManager=新的LinearLayoutManager(此);
mAdapter=新适配器RecyclView(不同的版本);
mRecyclerView.setLayoutManager(mllayoutmanager);
mRecyclerView.setAdapter(mAdapter);
}
//体裁列表
public void differentGenreList(){
differentigenres=newarraylist();
添加(新的差异事件(“行动”);
添加(新的DifferentingEnres(“冒险”));
添加(新的DifferentingEnres(“动画”));
添加(新的DifferentingEnres(“传记”);
添加(新的“喜剧”);
添加(新的不同犯罪);
添加(新的“戏剧”);
添加(新的不同系列(“系列”);
添加(新的“幻想”);
添加(新的differentGenres(“历史”));
添加(新的“恐怖”);
添加(新的“音乐”);
添加(新的不同音乐剧(“音乐剧”);
添加(新的DifferentingEnres(“神秘”));
添加(新的“浪漫”);
添加(新的“不同的运动”);
添加(新的“超级英雄”);
添加(新的DifferentingEnres(“Thriller”);
添加(新的“战争”);
}
//搜索图标
@凌驾
公共布尔onCreateOptions菜单(菜单){
getMenuInflater().充气(R.menu.search,menu);
MenuItem MenuItem=menu.findItem(R.id.searchGenre);
SearchView SearchView=(SearchView)menuItem.getActionView();
setOnQueryTextListener(这个);
返回true;
}
//搜索过滤器
@凌驾
公共布尔值onQueryTextSubmit(字符串查询){
返回false;
}
@凌驾
公共布尔onQueryTextChange(字符串newText){
字符串输入=newText.toLowerCase();
ArrayList filtered=新的ArrayList();
对于(不同的根不同的根:不同的根){
if(differentingenres.getmGenre().toLowerCase().contains(
input.toLowerCase()){
过滤。添加(不同的根);
}
}
mAdapter.notifyDataSetChanged();
mAdapter.updateList(已过滤);
返回true;
}
}
这是我的适配器

    public class AdapterRecyclerView extends 
RecyclerView.Adapter<AdapterRecyclerView.GenreViewHolder> {

        private ArrayList<DifferentGenres> mGenreItems;


        private OnItemClickListener mOnItemClickListener;

        public interface OnItemClickListener {
            void onItemClick(int position);

        }

        public void setmOnItemClickListener(OnItemClickListener 
 listener) {

            mOnItemClickListener = listener;

        }


        public static class GenreViewHolder extends 
 RecyclerView.ViewHolder {
            public TextView mTextView;

            public GenreViewHolder(View itemView, final 
 OnItemClickListener listener) {
                super(itemView);
                mTextView = itemView.findViewById(R.id.genreText);


                itemView.setOnClickListener(new View.OnClickListener() 
 {
                    @Override
                    public void onClick(View v) {

                        if (listener != null) {
                            int position = getAdapterPosition();
                            listener.onItemClick(position);

                        }

                    }
                });
            }
        }

        public AdapterRecyclerView(ArrayList<DifferentGenres> 
genresItems) {

            mGenreItems = genresItems;
        }


        @NonNull
        @Override
        public GenreViewHolder onCreateViewHolder(@NonNull ViewGroup 
parent, int viewType) {
            View view = 
LayoutInflater.from(parent.getContext()).inflate(R.layout.genre_item, 
parent, false);
            GenreViewHolder genreViewHolder = new GenreViewHolder(view, 
mOnItemClickListener);

            return genreViewHolder;
        }

        @Override
        public void onBindViewHolder(@NonNull GenreViewHolder holder, 
int position) {
            DifferentGenres currentItems = mGenreItems.get(position);
            holder.mTextView.setText(currentItems.getmGenre());


        }

        @Override
        public int getItemCount() {
            return mGenreItems.size();
        }


        //filter searchview
        public void updateList(ArrayList updated) {

            mGenreItems = new ArrayList<>();
            mGenreItems.addAll(updated);

            notifyDataSetChanged();

        }

        public DifferentGenres getItem(int position){
            return mGenreItems.get(position);
        }


  }
公共类AdapterRecyclView扩展
RecyclerView.适配器{
私人ArrayList mGenreItems;
private-McClickListener监视器ClickListener;
公共接口侦听器{
无效单击(内部位置);
}
public void setMonitorItemClickListener(OnItemClickListener)
(听众){
MonitorClickListener=监听器;
}
公共静态类GenreViewHolder扩展
RecyclerView.ViewHolder{
公共文本视图mTextView;
public GenReviewWholder(查看项目视图,最终版本
(监听器){
超级(项目视图);
mTextView=itemView.findviewbyd(R.id.genreText);
itemView.setOnClickListener(新视图.OnClickListener()
{
@凌驾
公共void onClick(视图v){
if(侦听器!=null){
int position=getAdapterPosition();
listener.onItemClick(位置);
}
}
});
}
}
公共适配器RecyCLERVIEW(ArrayList
基因重组项目){
mGenreItems=基因序列;
}
@非空
@凌驾
public GenreViewHolder onCreateViewHolder(@NonNull ViewGroup
父对象,int视图类型){
视图=
LayoutFlater.from(parent.getContext())。充气(R.layout.genre_项,
父母,假);
GenreViewHolder GenreViewHolder=新的GenreViewHolder(视图,
mOnItemClickListener);
返回genreViewHolder;
}
@凌驾
BindViewHolder上的公共无效(@NonNull GenReviewWholder holder,
内部位置){
differentingrenrescurrentItems=mGenreItems.get(位置);
holder.mTextView.setText(
public interface OnItemClickListener {
        void onItemClick(     DifferentGeners object    );

    }