在特定位置后停止滚动RecyclerView



我想要一个在特定位置后停止滚动的水平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条记录通知适配器,或者打开一个新活动来显示所有记录。

最新更新