RecyclerView 2 列表合二为一

RecyclerView 2 lists in one

我正在尝试创建与此类似的内容:

RecyclerView

我想要不完整的项目和已完成的项目,而不是文件夹和文件。

我是 RecyclerViews 的新手,我如何设法将两个不相关的列表(例如文件夹和文件)放入一个滚动的 RecyclerView 中?

您可以为此使用分段的 recyclerView。您可以将部分设置为 header,每个 header 都有自己的项目。

引用此库:Sectioned RecyclerView

您可以使用支持多个 viewType 或视图持有者的 heterogenous RecyclerView。例如,您的数据集可以是 List<Object> 或支持模型文件和文件夹的标记 class,然后您可以在适配器中执行类似的操作:

public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
class ViewHolderFolders extends RecyclerView.ViewHolder {
    ...
    public ViewHolderFolders(View itemView){
    ...
    }
}

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

@Override
public int getItemViewType(int position) {
    //Let us say you return 0 for folders and 1 for files
    //This is just an example you could write your own logic but make sure to  differenciate the two
    //Folders and Files in here are model class used to populate the 
    //recyclerview with. This is just an example.
    if (yourDataSet.get(position) instanceof Folders) {
        return 0;
    } else{
        return 1;
    }

}

@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
     switch (viewType) {
         case 0: return new ViewHolderFolders(...);
         case 1: return new ViewHolderFiles(...);
         //Your code here
     }
}

@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) {
    switch (holder.getItemViewType()) {
        case 0:
            ViewHolderFolders viewHolderFolders = (ViewHolderFolders)holder;
            ...
            break;

        case 1:
            ViewHolderFiles viewHolderFiles = (ViewHolderFiles)holder;
            ...
            break;
    }
}

}