notifyItemRangeInserted不刷新0项

时间:2017-12-22 09:41:10

标签: android android-recyclerview

我有RecyclerView.Adapter<RecyclerView.ViewHolder>分页按钮(加载更多)

在像页脚这样的RecyclerView中加载更多按钮。每个请求获得20行,如果我得到&lt; 20项,我需要禁用此按钮:

 @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        if (holder instanceof ViewHolder) {
            ...
        } else if (holder instanceof FooterViewHolder) {
            ...
            viewHolder.loadMore.setEnabled(isVisibleLoadButton);
        }
    }

public void addData(List<TransactionItem> opcTransactions) {
        final int positionStart = transactionItems.size()+1;
        isVisibleLoadButton = opcTransactions.size() >= 20;
        transactionItems.addAll(opcTransactions);
        notifyItemRangeInserted(positionStart, opcTransactions.size());
    }

如果我的opcTransactions有一个或多个项isVisibleLoadButton设置为false,我的加载更多按钮设置为禁用。但是,如果我得到emty list opcTransactions size = 0 - 加载更多按钮没有diasbled。

@Override
    public int getItemCount() {
        if (transactionItems == null) {
            return 0;
        }

        if (transactionItems.size() == 0) {
            //Return 1 here to show nothing
            return 1;
        }

        // Add extra view to show the footer view
        return transactionItems.size() + 1;
    }

1 个答案:

答案 0 :(得分:-1)

问题出在这一行。

final int positionStart = transactionItems.size()+1;

positionStart应指向列表的最后一项。索引从 ZERO 开始。用它作为。

final int positionStart = transactionItems.size();