Android studio recyclerview中的searchview没有';t在搜索后选择正确的位置
我发现很多人都在回答这个问题,很多人都为他们工作过,比如holder.setIsRecyclable(true)。然而,他们都没有为我工作。我似乎找不到。。。如果有人能帮助我,我将不胜感激。我认为这与我的过滤器或适配器有关。。我不太确定 这是我的活动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
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 );
}