我想要一个在特定位置后停止滚动的水平RecyclerView
。假设RecyclerView
中有100[1,2,3,...]
项目,但当用户滚动它时,当它到达第10个项目/位置时,它应该停止滚动。此外,后面应该显示一个按钮。单击此按钮将显示完整的列表活动。
我所理解的是,您想要实现视图更多的功能。请尝试以下代码。如果有超过10个项目,那么您必须将11的大小传递给适配器。最后的第11个单元格将是查看更多(在您的情况下为"A按钮")。你需要实现两种不同类型的视图。一种是常规布局,第二种将包括你的按钮以查看更多。以及适配器类中的两个查看器。
List<Items> item_list;
final int TYPE_NORMAL = 0, TYPE_MORE = 1;
boolean isMoreCellVisible = false;
int count;
public CustomRecycleAdapter(List<Items> item_list) {
this.item_list = item_list;
if (item_list.size() > 10) {
count = 11;
isMoreCellVisible = true;
} else {
count = item_list.size();
}
}
您可以通过下面的代码来执行您想要显示哪个单元格的逻辑。
@Override
public int getItemViewType(int position) {
if (position == 10) {
if (isMoreCellVisible) {
return TYPE_MORE;
} else {
return TYPE_NORMAL;
}
} else {
return TYPE_NORMAL;
}
}
在onCreateViewHolder方法中,检查您必须充气的单元格类型,
switch (viewType) {
case TYPE_NORMAL: {
// Return a new holder instance
vh = new ViewHolder0(contactView);
}
break;
case TYPE_MORE: {
// Return a new holder instance
vh = new ViewHolder2(contactView);
}
break;
default:
break;
}
对于onBindViewHolder,
switch (holder.getItemViewType()) {
case TYPE_NORMAL: {
ViewHolder0 vh0 = (ViewHolder0) holder;
vh0.txt_name.setText(item_list.get(position).getName());
}
break;
case TYPE_MORE: {
//View more layout
ViewHolder2 vh2 = (ViewHolder2) holder;
}
break;
default:
break;
}
在getItemCount返回计数中,
@Override
public int getItemCount() {
return count;
}
您可以在包含按钮的viewholder类中设置按钮单击事件。您可以在按钮上执行任何操作,比如用所有100条记录通知适配器,或者打开一个新活动来显示所有记录。