RecyclerView 2 列表合二为一
RecyclerView 2 lists in one
我正在尝试创建与此类似的内容:
RecyclerView
我想要不完整的项目和已完成的项目,而不是文件夹和文件。
我是 RecyclerViews 的新手,我如何设法将两个不相关的列表(例如文件夹和文件)放入一个滚动的 RecyclerView 中?
您可以为此使用分段的 recyclerView。您可以将部分设置为 header,每个 header 都有自己的项目。
您可以使用支持多个 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;
}
}
}
我正在尝试创建与此类似的内容:
RecyclerView
我想要不完整的项目和已完成的项目,而不是文件夹和文件。
我是 RecyclerViews 的新手,我如何设法将两个不相关的列表(例如文件夹和文件)放入一个滚动的 RecyclerView 中?
您可以为此使用分段的 recyclerView。您可以将部分设置为 header,每个 header 都有自己的项目。
您可以使用支持多个 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;
}
}
}