gpt4 book ai didi

android - RecyclerView 查看项目

转载 作者:行者123 更新时间:2023-11-29 16:51:38 26 4
gpt4 key购买 nike

我想在 RecyclerView 中显示 2 列,但它们显示在 1 列中,就像这张照片:

1

如何在 2 列中显示我的 View ?

我在我的代码中尝试使用 2 列:

rcv_pro.setLayoutManager(new GridLayoutManager(this, 2, LinearLayoutManager.VERTICAL, false));

但它们不会显示在 2 列中。

我在 2 culmn 中找到了一个 soulottion,我可以在清除此代码的情况下修复它:"menuList_info_models.clear(); "但我现在有一个新问题,当我清除那个 cod 时,我在 recyclerview 中的项目一团糟,任何时候我在 recyclerview 中滚动,我的项目都会改变

2

public class MultiItem_Music_Adapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
ArrayList<Object> objects = new ArrayList<Object>();
Context context;

private final static int MUSIC_CAT = 1;
private final static int MUSIC_ADA = 2;
private ArrayList<MenuList_Info_Model> menuList_info_models;
private ArrayList<Cat_Model> cat_models;
private Music_Adapter adapter;
private List<MenuList_Info_Model> personList = new ArrayList<>();
private RecyclerView recyclerView;
private ListAdapter mAdapter;
private ArrayList<MenuList_Info_Model> music_data;
public GridLayoutManager manager ;

public MultiItem_Music_Adapter(ArrayList<Object> objects, Context context) {
Log.e("MyLog","farzad");
this.objects = objects;
this.context = context;
if (menuList_info_models == null)
menuList_info_models = new ArrayList<MenuList_Info_Model>();
if (cat_models == null) cat_models = new ArrayList<Cat_Model>();

adapter = new Music_Adapter(menuList_info_models, this.context);
}

@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
RecyclerView.ViewHolder viewHolder ;
LayoutInflater inflater = LayoutInflater.from(context);
View view;
switch (viewType) {
case MUSIC_CAT:
view = inflater.inflate(R.layout.music_cat_item, parent, false);
viewHolder = new Music_cat_ViewHolder(view);
break;
case MUSIC_ADA:
view= inflater.inflate(R.layout.music_item_multi, parent, false);
viewHolder = new Multi_item_ViewHolder(view);
break;
default:
view = inflater.inflate(R.layout.music_item_multi, parent, false);
viewHolder = new Multi_item_ViewHolder(view);
break;
}
return viewHolder;
}

@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
Log.e("hamid_ali", "---------------------");
switch (holder.getItemViewType()) {
case MUSIC_CAT:
Cat_Config((Music_cat_ViewHolder) holder,position);
break;
case MUSIC_ADA:
item_Config((Multi_item_ViewHolder) holder,position);
break;
}
}
private void item_Config(Multi_item_ViewHolder item_viewHolder,int pos) {
MenuList_Info_Model menuList_info_model = (MenuList_Info_Model) objects.get(pos);
menuList_info_models.clear();
menuList_info_models.add(menuList_info_model);
Log.e("hamid_st",menuList_info_models.size() +"");
manager = new GridLayoutManager(this.context, 2, LinearLayoutManager.VERTICAL, false);
item_viewHolder.rcv_multi.setLayoutManager(manager);
item_viewHolder.rcv_multi.setAdapter(adapter);
}

private void Cat_Config(Music_cat_ViewHolder musicCatViewHolder,int pos) {
Cat_Model cat_model = (Cat_Model) objects.get(pos);
musicCatViewHolder.txt_cat_name.setText(cat_model.getMenu_name());

}

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

@Override
public int getItemViewType(int position) {
if (objects.get(position) instanceof Cat_Model) {
return MUSIC_CAT;
} else {

return MUSIC_ADA;
}
}
}

最佳答案

你可以使用 GridLayoutManager

set GridLayoutManager to your RecyclerView uisng below code

GridLayoutManager  gridLayoutManager = new GridLayoutManager(MainActivity.this, 2);
recyclerView.setLayoutManager(gridLayoutManager);

这里是链接如何使用 GridLayoutManager使用 RecyclerView

关于android - RecyclerView 查看项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46291916/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com