Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

LoadMoreWrapper

未关闭
#118 1 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
2/5
预计耗时
1-3 小时
新手友好度
25/100
Issue 类型
缺陷
描述清晰度
需要澄清
活跃度
停滞
技术栈
android, java
领域
mobile-dev

调研方向

首先,复现 issue 中所示 LoadMoreWrapper 源代码报告的 Java 编译错误。检查 public LoadMoreWrapper 类在项目中的存储和声明方式,然后运行 Android 构建,以确认该类能够在没有文件名错误的情况下完成编译。

由索引模型根据 Issue 内容生成。

描述

Error:(16, 8) 错误: 类LoadMoreWrapper是公共的, 应在名为 LoadMoreWrapper.java 的文件中声明
这个类报错 大神
`package com.zhy.adapter.recyclerview.wrapper;

import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.StaggeredGridLayoutManager;
import android.view.View;
import android.view.ViewGroup;

import com.zhy.adapter.recyclerview.base.ViewHolder;
import com.zhy.adapter.recyclerview.utils.WrapperUtils;

/**

  • Created by zhy on 16/6/23.
    */
    public class LoadMoreWrapper extends RecyclerView.Adapter<RecyclerView.ViewHolder>
    {
    public static final int ITEM_TYPE_LOAD_MORE = Integer.MAX_VALUE - 2;

    private RecyclerView.Adapter mInnerAdapter;
    private View mLoadMoreView;
    private int mLoadMoreLayoutId;

    public LoadMoreWrapper(RecyclerView.Adapter adapter)
    {
    mInnerAdapter = adapter;
    }

    private boolean hasLoadMore()
    {
    return mLoadMoreView != null || mLoadMoreLayoutId != 0;
    }

    private boolean isShowLoadMore(int position)
    {
    return hasLoadMore() && (position >= mInnerAdapter.getItemCount());
    }

    @Override
    public int getItemViewType(int position)
    {
    if (isShowLoadMore(position))
    {
    return ITEM_TYPE_LOAD_MORE;
    }
    return mInnerAdapter.getItemViewType(position);
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
    {
    if (viewType == ITEM_TYPE_LOAD_MORE)
    {
    ViewHolder holder;
    if (mLoadMoreView != null)
    {
    holder = ViewHolder.createViewHolder(parent.getContext(), mLoadMoreView);
    } else
    {
    holder = ViewHolder.createViewHolder(parent.getContext(), parent, mLoadMoreLayoutId);
    }
    return holder;
    }
    return mInnerAdapter.onCreateViewHolder(parent, viewType);
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position)
    {
    if (isShowLoadMore(position))
    {
    if (mOnLoadMoreListener != null)
    {
    mOnLoadMoreListener.onLoadMoreRequested();
    }
    return;
    }
    mInnerAdapter.onBindViewHolder(holder, position);
    }

    @Override
    public void onAttachedToRecyclerView(RecyclerView recyclerView)
    {
    WrapperUtils.onAttachedToRecyclerView(mInnerAdapter, recyclerView, new WrapperUtils.SpanSizeCallback()
    {
    @Override
    public int getSpanSize(GridLayoutManager layoutManager, GridLayoutManager.SpanSizeLookup oldLookup, int position)
    {
    if (isShowLoadMore(position))
    {
    return layoutManager.getSpanCount();
    }
    if (oldLookup != null)
    {
    return oldLookup.getSpanSize(position);
    }
    return 1;
    }
    });
    }

    @Override
    public void onViewAttachedToWindow(RecyclerView.ViewHolder holder)
    {
    mInnerAdapter.onViewAttachedToWindow(holder);

     if (isShowLoadMore(holder.getLayoutPosition()))
     {
         setFullSpan(holder);
     }
    

    }

    private void setFullSpan(RecyclerView.ViewHolder holder)
    {
    ViewGroup.LayoutParams lp = holder.itemView.getLayoutParams();

     if (lp != null
             && lp instanceof StaggeredGridLayoutManager.LayoutParams)
     {
         StaggeredGridLayoutManager.LayoutParams p = (StaggeredGridLayoutManager.LayoutParams) lp;
    
         p.setFullSpan(true);
     }
    

    }

    @Override
    public int getItemCount()
    {
    return mInnerAdapter.getItemCount() + (hasLoadMore() ? 1 : 0);
    }

    public interface OnLoadMoreListener
    {
    void onLoadMoreRequested();
    }

    private OnLoadMoreListener mOnLoadMoreListener;

    public LoadMoreWrapper setOnLoadMoreListener(OnLoadMoreListener loadMoreListener)
    {
    if (loadMoreListener != null)
    {
    mOnLoadMoreListener = loadMoreListener;
    }
    return this;
    }

    public LoadMoreWrapper setLoadMoreView(View loadMoreView)
    {
    mLoadMoreView = loadMoreView;
    return this;
    }

    public LoadMoreWrapper setLoadMoreView(int layoutId)
    {
    mLoadMoreLayoutId = layoutId;
    return this;
    }
    }
    `

主要语言
Java
星标
4.7k
派生
1.2k
PR 合并指标
30 天内没有已合并 PR

贡献指南

这个仓库没有索引到贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

hongyangAndroid/baseAdapter 的其他 Issue

查看 hongyangAndroid/baseAdapter 的全部 Issue

相似的 Issue

更多 Java Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。