gpt4 book ai didi

java - Android Recyclerview 添加其他 View

转载 作者:行者123 更新时间:2023-11-29 23:38:33 25 4
gpt4 key购买 nike

我目前在我的 recyclerView 中有一个项目列表。但是,我想在随机位置插入不同类型的 viewHolder。

我有一个布局文件 my_other_view,我想将其插入到 recyclerview 中的随机位置。布局文件也必须与 ViewHolder 相关联。

这是我当前的 RecyclerAdapter 类

public class MyAdapter extends RecyclerView.Adapter
{
private List<MyItem> items;
private Context context;

public MyAdapter (Context context, List<MyItem> items)
{
this.items = items;
this.context = context;
}

@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
super.onAttachedToRecyclerView(recyclerView);
}

@Override
public RecyclerView.ViewHolder onCreateViewHolder(final ViewGroup parent, final int viewType) {
final View view = LayoutInflater.from(parent.getContext()).inflate(viewType, parent, false);
return new MyViewHolder(view);
}

@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) {
holder.itemView.setLongClickable(true);
((MyViewHolder) holder).bindData(items.get(position));
}

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

@Override
public int getItemViewType(final int position) {
return R.layout.my_list_entry;
}
}

最佳答案

为了保持一致性,将随机索引创建为构造函数的一部分并将其存储在局部变量中。然后做这样的事情

public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private static final int TYPE_1 = 1;
private static final int TYPE_2 = 2;

int randomPos = 0;

public MyAdapter (Context context, List<MyItem> items){
this.items = items;
this.context = context;
randomPos = new Random().nextInt(items.size());
}
@Override
public int getItemViewType(int position) {
return position == randomPos ? TYPE_2 : TYPE_1;
}

@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
switch (viewType) {
case TYPE_1: return new ViewHolder1(...);
case TYPE_2: return new ViewHolder2(...);
}
}

@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) {
switch (holder.getItemViewType()) {
case TYPE_1:
ViewHolder1 viewHolder1 = (ViewHolder1)holder;
...
break;
case TYPE_2:
ViewHolder2 viewHolder2 = (ViewHolder2)holder;
...
break;
}
}

class ViewHolder1 extends RecyclerView.ViewHolder {
...
public ViewHolder1(View itemView){
...
}
}

class ViewHolder2 extends RecyclerView.ViewHolder {
...
public ViewHolder2(View itemView){
...
}
}

关于java - Android Recyclerview 添加其他 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52044747/

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