我想要一个水平RecyclerView
,它会在特定位置后停止滚动。假设100[1,2,3,...]
中有RecyclerView
个项目,但是当用户滚动它时,它应该在到达第10个项目/位置时停止滚动。此外,应在其后显示一个按钮。单击此按钮将显示完整列表活动。
答案 0 :(得分:0)
我的理解是您希望实现查看更多功能。请尝试以下代码。 如果有超过10个项目,那么你必须将11的大小传递给你的适配器。最后的第11个单元格将被查看更多(在你的情况下"一个按钮")。 您需要实现2种不同类型的视图。一种是常规布局,第二种将包含您的按钮以便查看更多内容。和适配器类中的两个视图。
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类中设置Button click事件。您可以在按钮点击上执行任何操作,例如通知适配器,包含所有100条记录,或者打开一个新活动以显示所有重新创建。