如何在 Android 中构建像 Play Store 这样的自定义水平回收器视图?
How to build a custom horizontal recycler view like Play Store in Android?
我已经知道如何制作水平 RecyclerView,但我想制作一个 自定义回收器视图,在开始时 space 有一个空白 ,当我们开始滚动背景图像变淡。
- 只需让您的适配器假装拥有比实际拥有的数据更多的数据。
当它给你
position <n
(n:你想要在开始时清空的项目数)时,不要加载任何图像并将其留空。
当它询问 getItemCount()
return 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
和 return 值来使用视图类型值,该值指示您是否希望此视图持有者为空或具有不同于常规视图的其他行为持有人。
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 将是空的视图持有者。
我已经知道如何制作水平 RecyclerView,但我想制作一个 自定义回收器视图,在开始时 space 有一个空白 ,当我们开始滚动背景图像变淡。
- 只需让您的适配器假装拥有比实际拥有的数据更多的数据。
当它给你
position <n
(n:你想要在开始时清空的项目数)时,不要加载任何图像并将其留空。 当它询问getItemCount()
returnyour 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
和 return 值来使用视图类型值,该值指示您是否希望此视图持有者为空或具有不同于常规视图的其他行为持有人。
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 将是空的视图持有者。