ProjectDemo icon indicating copy to clipboard operation
ProjectDemo copied to clipboard

左右上下滑动列表,如何实现加载更多?

Open roybill opened this issue 3 years ago • 0 comments

我现在配合BRVAH使用,但是加载更多就报空指针了 类一: public class OneViewHolder extends BaseViewHolder implements View.OnLongClickListener, View.OnClickListener {

private SparseArray<View> viewSparseArray;

private CommonViewHolder.onItemCommonClickListener commonClickListener;

public OneViewHolder(@NotNull View view) {
    super(view);
    itemView.setOnClickListener(this);
    itemView.setOnLongClickListener(this);
    viewSparseArray = new SparseArray<>();
}

/**
 * 根据 ID 来获取 View
 *
 * @param viewId viewID
 * @param <T>    泛型
 * @return 将结果强转为 View 或 View 的子类型
 */
public <T extends View> T getView(int viewId) {
    // 先从缓存中找,找打的话则直接返回
    // 如果找不到则 findViewById ,再把结果存入缓存中
    View view = viewSparseArray.get(viewId);
    if (view == null) {
        view = itemView.findViewById(viewId);
        viewSparseArray.put(viewId, view);
    }
    return (T) view;
}

public OneViewHolder setText(int viewId, CharSequence text) {
    TextView tv = getView(viewId);
    tv.setText(text);
    return this;
}

// public OneViewHolder setViewVisibility(int viewId, int visibility) { // getView(viewId).setVisibility(visibility); // return this; // }

public OneViewHolder setImageResource(int viewId, int resourceId) {
    ImageView imageView = getView(viewId);
    imageView.setImageResource(resourceId);
    return this;
}

public interface onItemCommonClickListener {

    void onItemClickListener(int position);

    void onItemLongClickListener(int position);

}

public void setCommonClickListener(CommonViewHolder.onItemCommonClickListener commonClickListener) {
    this.commonClickListener = commonClickListener;
}

@Override
public void onClick(View v) {
    if (commonClickListener != null) {
        commonClickListener.onItemClickListener(getAdapterPosition());
    }
}

@Override
public boolean onLongClick(View v) {
    if (commonClickListener != null) {
        commonClickListener.onItemLongClickListener(getAdapterPosition());
    }
    return false;
}

}

类二: public class MyCoinAdapter extends BaseQuickAdapter<OperatorBean.Lists, OneViewHolder> implements LoadMoreModule {

private LayoutInflater mLayoutInflater;
private int mLayoutId;
private int mFixX;
private ArrayList<View> mMoveViewList = new ArrayList<>();

public MyCoinAdapter(int layoutResId) {
    super(layoutResId);
    mLayoutInflater = LayoutInflater.from(UIUtils.getContext());
    mLayoutId = layoutResId;
}

@Override
protected void convert(@NotNull OneViewHolder baseViewHolder, OperatorBean.Lists bean) {
    baseViewHolder.setText(R.id.tv_number, String.valueOf(bean.getNumber()))
            .setText(R.id.tv_user, bean.getUserName())
            .setText(R.id.tv_wallet_address, bean.getAddress())
            .setText(R.id.tv_ip_address, bean.getIp());
}

@Override
public OneViewHolder onCreateViewHolder(@NotNull ViewGroup parent, int viewType) {
    View itemView = mLayoutInflater.inflate(mLayoutId, parent, false);
    OneViewHolder holder = new OneViewHolder(itemView);
    //获取可滑动的view布局
    LinearLayout moveLayout = holder.getView(R.id.id_move_layout);
    moveLayout.scrollTo(mFixX, 0);
    mMoveViewList.add(moveLayout);
    return holder;

}

public ArrayList<View> getMoveViewList(){
    return mMoveViewList;
}

public void setFixX(int fixX){
    mFixX=fixX;
}

}

错误信息: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.View.setVisibility(int)' on a null object reference at com.chad.library.adapter.base.loadmore.BaseLoadMoreView.isVisible(BaseLoadMoreView.kt:92) at com.chad.library.adapter.base.loadmore.BaseLoadMoreView.convert(BaseLoadMoreView.kt:71) at com.chad.library.adapter.base.BaseQuickAdapter.onBindViewHolder(BaseQuickAdapter.kt:372) at com.chad.library.adapter.base.BaseQuickAdapter.onBindViewHolder(BaseQuickAdapter.kt:382) at com.chad.library.adapter.base.BaseQuickAdapter.onBindViewHolder(BaseQuickAdapter.kt:75) at androidx.recyclerview.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:7337) at androidx.recyclerview.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:6194) at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6460) at androidx.recyclerview.widget.GapWorker.prefetchPositionWithDeadline(GapWorker.java:288) at androidx.recyclerview.widget.GapWorker.flushTaskWithDeadline(GapWorker.java:345) at androidx.recyclerview.widget.GapWorker.flushTasksWithDeadline(GapWorker.java:361) at androidx.recyclerview.widget.GapWorker.prefetch(GapWorker.java:368) at androidx.recyclerview.widget.GapWorker.run(GapWorker.java:399) at android.os.Handler.handleCallback(Handler.java:938) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:223) at android.app.ActivityThread.main(ActivityThread.java:7656) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)

roybill avatar Jul 13 '22 03:07 roybill