Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

LoadMoreWrapper

Aperta
#118 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
25/100
Tipo di issue
Bug
Chiarezza
Da chiarire
Stato di attività
Ferma
Stack tecnologico
android, java
Ambito
mobile-dev

Direzione di ricerca

Inizia riproducendo l’errore di compilazione Java segnalato per il codice sorgente di LoadMoreWrapper mostrato nell’issue. Verifica come la classe pubblica LoadMoreWrapper è archiviata e dichiarata nel progetto, quindi esegui la build Android per confermare che la classe venga compilata senza l’errore relativo al nome del file.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

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;
    }
    }
    `

Lingua principale
Java
Stelle
4.7k
Fork
1.2k
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di hongyangAndroid/baseAdapter

Tutte le issue di hongyangAndroid/baseAdapter

Issue simili

Altre issue su Java

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.