RecyclerView里面有一个按钮

时间:2018-04-21 13:42:16

标签: android android-recyclerview

我需要创建一个这样的布局:

带图片和按钮的布局

我不知道该怎么做。我创建了包含不同项目的RecyclerViews,但有一些共同之处(如图片,视频,它们都可以看作是媒体类型)。在这种情况下,第一项是一个按钮(或一个图像作为按钮),其他只是图片,所以我不能将它们全部放在适配器的单个列表中,因为它们不是代表相同的逻辑。一个想法是在位置0放置另一个对象,指示它应该被创建为按钮,并在该位置之后的图像列表,但是然后我需要处理项目不在位置i但在位置i + 1,所以我不喜欢那个解决方案。任何"清洁"这样做的方法?

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。

希望这可以帮到你