[英]Android Recyclerview add other view
I currently have a list of items in my recyclerView.我目前在我的 recyclerView 中有一个项目列表。 However, I want to insert a different type of viewHolder at a random position.
但是,我想在随机位置插入不同类型的 viewHolder。
I have a layout file my_other_view which I want to insert at a random position in the recyclerview.我有一个布局文件my_other_view ,我想将其插入到 recyclerview 中的随机位置。 The layout file has to be associated with a ViewHolder as well.
布局文件也必须与 ViewHolder 相关联。
This is my current RecyclerAdapter class这是我当前的 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;
}
}
For consistency create the random index as part of your constructor and store it in a local variable.为了一致性,创建随机索引作为构造函数的一部分并将其存储在局部变量中。 Then do something like this
然后做这样的事情
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){
...
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.