android - 根据值(value)对 recyclerview 中的项目进行分组

标签 android android-recyclerview

我有一些带有日期字段的 POJO,我在 RecyclerView 中显示这些字段。现在我只想在具有特定日期的第一个项目上显示日期。 这意味着如果我有 4 个日期为 01/13/2017 的项目,日期应该出现在第一个项目上,而不是在其余 3 个项目上。 有什么想法吗?

最佳答案

使用这种类型的 recyclerView :

  1. 确保像这样扩展 RrecyclerViewAdapter RecyclerView.Adapter

  2. 创建两个 ViewHolder。

    public class RecyclersViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    
    ArrayList<Data> arrayList;
    
    Context context;
    
    public final int TYPE_DATE = 0;
    public final int TYPE_CONTENT = 1;
    
    public RecyclersViewAdapter(ArrayList<Data> arrayList, Context context) {
        this.arrayList = arrayList;
        this.context = context;
    }
    
    @Override
    public int getItemViewType(int position) {
    
    
        // Data Class have three fields : Id,Date,Title
    
        if (arrayList.get(position).getId().equals("") && arrayList.get(position).getTitle().equals(""))
            return TYPE_DATE;
        else
            return TYPE_CONTENT;
    }
    
    @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) {
    
        if (viewType == TYPE_DATE) {
    
            View view = LayoutInflater.from(context).inflate(R.layout.recyc_row,null);
            return new contentViewHolder(view);
    
        } else {
    
            View view1 = LayoutInflater.from(context).inflate(R.layout.recyc_row1,null);
            return new dateViewHolder(view1);
        }
    
    }
    
    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int position) {
    
    
       if(viewHolder instanceof contentViewHolder) {
    
           ((contentViewHolder) viewHolder).id.setText(arrayList.get(position).getId());
           ((contentViewHolder) viewHolder).title.setText(arrayList.get(position).getTitle());
        }
    
        if(viewHolder instanceof dateViewHolder) {
    
         ((dateViewHolder) viewHolder).date.setText(arrayList.get(position).getStartDate());
        }
    
    }
    
    
    public class contentViewHolder extends RecyclerView.ViewHolder {
    
        TextView id,title;
    
        public contentViewHolder(@NonNull View itemView) {
            super(itemView);
    
            id = itemView.findViewById(R.id.tv_id);
            title = itemView.findViewById(R.id.tv_title);
        }
    }
    
    public class dateViewHolder extends RecyclerView.ViewHolder {
        TextView date;
    
        public dateViewHolder(@NonNull View itemView) {
            super(itemView);
    
            date = itemView.findViewById(R.id.tv_date);
        }
    }
    
    @Override
    public int getItemCount() {
        return arrayList.size();
    }
    

关于android - 根据值(value)对 recyclerview 中的项目进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41638719/

相关文章:

android - RXJava - 一个接一个地运行多个可观察对象(像 concat,但每个可观察对象都有 onCompleted)

java - 当 onBindViewHolder 调用播放视频时,如果不在 recyclerview 中停止视频

android - 如何在 RealmRecyclerViewAdapter 中实现可过滤

android - 动态添加项目到 RecyclerView

Android StaggeredGrid RecyclerView 自动移动项目

android - 如何制作兼容RecyclerView的Android自定义 View

android - 查看 setBackground 与 drawable 删除海拔的阴影

java - 如何在每个 GridView 单元格中插入多个项目

Android MediaStore sqlite 数据库位置

android - 如何检查安装的应用程序是我的?