在特定位置后停止滚动RecyclerView

时间:2016-03-31 05:31:36

标签: android listview android-recyclerview

我想要一个水平RecyclerView,它会在特定位置后停止滚动。假设100[1,2,3,...]中有RecyclerView个项目,但是当用户滚动它时,它应该在到达第10个项目/位置时停止滚动。此外,应在其后显示一个按钮。单击此按钮将显示完整列表活动。

1 个答案:

答案 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条记录,或者打开一个新活动以显示所有重新创建。