[CymChad/BaseRecyclerViewAdapterHelper]下拉刷新问题

2024-08-08 174 views
6

版本:compile 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.27' 机型:华为mate 8 问题行为:下拉刷新报错 问题日志:ava.lang.IllegalStateException: Added View has RecyclerView as parent but view is not a real child. Unfiltered index:0 x_t004 op 18r8 66i0k65u 我的代码:(下拉刷新成功后的回调)


 @Override
    public void showSuccessView(ItemInfo itemInfo) {
        setListener();
        if (mActivity == null || mActivity.isFinishing()
                || itemInfo == null || itemInfo.getData() == null) {
            return;
        }
        mAdapter.setEnableLoadMore(mCurrentPage==1?false:true);
        mIsLoadMore = false;

        if (mMenuDetail != null)
            MainMenuHelper.setChannelUpdateTime(mActivity, String.valueOf(mMenuDetail.getId()), System.currentTimeMillis());

        isLoading = false;
        if (mPtrFrame != null)
            mPtrFrame.refreshComplete();

        if (itemInfo.getAll_page() != 0)
            mAllPage = itemInfo.getAll_page();
        if (mCurrentPage == 1)
            mTotal = itemInfo.getTotal();

        if (mCurrentPage >= mAllPage) {
            mAdapter.setEnableLoadMore(false);
            mAdapter.loadMoreEnd();
            mAdapter.setOnLoadMoreListener(null, mRecyclerView);
            if (mAdapter.getFooterLayoutCount() < 1)
                mAdapter.setFooterView(mLayoutFooterView);
        } else
            mAdapter.loadMoreComplete();

        if (mCurrentPage > 1) {
            mAdapter.addData(itemInfo.getData());
        } else
            mAdapter.setNewData(itemInfo.getData());

        if (iFragment == null)
            return;

        if (mMenuDetail != null)
            iFragment.setDot(false, mMenuDetail, mChildId);
        iFragment.setSlideTotal(itemInfo.getTotal());
        iFragment.isShowSwitchView(itemInfo.getData().size() < 1 ? false : true);

    }

回答

6

不用setEnableLoadMore控制是否还有更多,用loadMoreEnd就行

5

还是不行

2

参考这个文章,应该是下拉刷新与上拉加载同时执行的问题

0

看过了我在下拉刷新跟加载跟多方法中同时大了log,只走了刷新的方法

0

@zhangchun123 这是个稳定复现的错误?

7

下啦刷新是用是Ultra-Pull-To-Refresh,我在每个fragment设置自动加载,然后手动加载的时候就会报错,我这个页面是只有头部数据,列表数据没有的情况下会报错

8
//*************下拉刷新的方法*******//
 @Override
    public void onRefreshBegin(PtrFrameLayout frame) {
        mAdapter.loadMoreEnd();
        if (mAdapter.getFooterLayoutCount() > 0)
            mAdapter.removeAllFooterView();
        mCurrentPage = 1;
        loadData(false, false);

    }
//************加载更多的方法******//
  @Override
    public void onLoadMoreRequested() {

        Common.Log('e', "onLoadMoreRequested -- onLoadMoreRequested");

        if (mCurrentPage > mAllPage) {
            mAdapter.loadMoreEnd(true);
            mAdapter.setEnableLoadMore(false);
            mAdapter.setFooterView(mLayoutFooterView);
        } else {
            mIsLoadMore = true;
            isLoading = true;
            mCurrentPage += 1;
            loadData(false, true);
        }

    }
//******************共同的回调*******///

 @Override
    public void showSuccessView(ItemInfo itemInfo) {
        setListener();
        if (mActivity == null || mActivity.isFinishing()
                || itemInfo == null || itemInfo.getData() == null) {
            return;
        }
        mAdapter.setEnableLoadMore(mCurrentPage==1?false:true);
        mIsLoadMore = false;

        if (mMenuDetail != null)
            MainMenuHelper.setChannelUpdateTime(mActivity, String.valueOf(mMenuDetail.getId()), System.currentTimeMillis());

        isLoading = false;
        if (mPtrFrame != null)
            mPtrFrame.refreshComplete();

        if (itemInfo.getAll_page() != 0)
            mAllPage = itemInfo.getAll_page();
        if (mCurrentPage == 1)
            mTotal = itemInfo.getTotal();

        if (mCurrentPage >= mAllPage) {
            mAdapter.setEnableLoadMore(false);
            mAdapter.setOnLoadMoreListener(null, mRecyclerView);
            if (mAdapter.getFooterLayoutCount() < 1)
                mAdapter.setFooterView(mLayoutFooterView);
        } else
            mAdapter.loadMoreComplete();

        if (mCurrentPage > 1) {
            mAdapter.addData(itemInfo.getData());
        } else
            mAdapter.setNewData(itemInfo.getData());

        if (iFragment == null)
            return;

        if (mMenuDetail != null)
            iFragment.setDot(false, mMenuDetail, mChildId);
        iFragment.setSlideTotal(itemInfo.getTotal());
        iFragment.isShowSwitchView(itemInfo.getData().size() < 1 ? false : true);

    }
0

@zhangchun123 看不出来有啥问题

3

但就是刷新就蹦了,报上面的bug问题

2

下拉还是上拉?

4

下啦刷新

1

谢谢我找到问题了,确实是下啦刷新跟加载更多同时走的问题。服务器没有数据返回总页数居然是1.跟当前page相同。谢啦