【发布时间】:2021-11-19 17:36:45
【问题描述】:
【问题讨论】:
-
所有这些都可以通过回收站视图完成。对于空白区域,只需让您的适配器假装比实际多 1 个项目,然后将所有内容移动一个(因此我们的第一个真正项目是索引 1,而不是索引 0)。淡化背景可以在 onScrollListener 中完成。
标签: java android android-layout android-recyclerview
【问题讨论】:
标签: java android android-layout android-recyclerview
position <n(n:您希望在开始时为空的项目数)时,不要加载任何图像并将其留空。
当它询问getItemCount() 中的数据大小时,返回your data size + n。public class MyAdapter extends RecyclerView.Adapter<MyViewHolder>{
...
private final int N =2 ;
@Override
public PageViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {...}
@Override
public void onBindViewHolder(@NonNull PageViewHolder holder, int position) {
if(position <N)return ;
else {
// bind your holder with data
}
}
@Override
public int getItemCount() {
return pageEntities.size() +N;
}
}
getItemViewType 来使用视图类型值,并返回值指示您是否希望此视图持有者为空或具有与常规视图持有者不同的行为。public class MyAdapter extends RecyclerView.Adapter<MyViewHolder>{
...
private final int N =2 ;
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v ;
if(viewType ==0){
v = LayoutInflater.from(context).inflate(R.layout.view_holder_item_1, parent, false);
}else {
v = LayoutInflater.from(context).inflate(R.layout.view_holder_item_2, parent, false);
}
return new new MyViewHolder(v.getRootView()) ;
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
if(position <N){
// bind your holder view of type 1 with data you want
}
else {
// bind your holder view of type 2 with data you want
}
}
@Override
public int getItemCount() {
return pageEntities.size() +N;
}
@Override
public int getItemViewType(int position) {
return position <N ?0:1 ;
}
}
在这种情况下,您的类型 1 将是空视图持有者。
【讨论】: