我需要创建一个这样的布局:
带图片和按钮的布局
我不知道该怎么做。我创建了包含不同项目的RecyclerViews,但有一些共同之处(如图片,视频,它们都可以看作是媒体类型)。在这种情况下,第一项是一个按钮(或一个图像作为按钮),其他只是图片,所以我不能将它们全部放在适配器的单个列表中,因为它们不是代表相同的逻辑。一个想法是在位置0放置另一个对象,指示它应该被创建为按钮,并在该位置之后的图像列表,但是然后我需要处理项目不在位置i但在位置i + 1,所以我不喜欢那个解决方案。任何"清洁"这样做的方法?
答案 0 :(得分:0)
您可以像这样覆盖RecyclerView适配器中的getItemViewType()和onCreateViewHolder()函数:
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private static final int VIEW_TYPE_1 = 1, VIEW_TYPE_2 = 2;
@Override
public int getItemViewType(int position) {
if (position == 0){
return VIEW_TYPE_1;
}else{
return VIEW_TYPE_2;
}
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
switch (viewType){
case VIEW_TYPE_1:
// inflate the view with button
break;
case VIEW_TYPE_2:
// inflate the view with image
break;
}
return holder;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
switch (holder.getItemViewType()){
case VIEW_TYPE_1:
//set the viewholder for view type 1
break;
case VIEW_TYPE_2:
//set the viewholder for view type 2
break;
}
}
您必须为每种类型的视图创建一个ViewHolder。
希望这可以帮到你