Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

LoadMoreWrapper

オープン
#118 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
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. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

hongyangAndroid/baseAdapter のほかの issue

hongyangAndroid/baseAdapter の issue をすべて見る

似ている issue

Java の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。