首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >阈值刷新Android后永续循环中的焦点问题

阈值刷新Android后永续循环中的焦点问题
EN

Stack Overflow用户
提问于 2016-11-05 04:31:03
回答 1查看 41关注 0票数 0

我在下面的代码中有一个无休止的循环视图检查

代码语言:javascript
复制
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;

public abstract class EndlessRecyclerOnScrollListener extends
    RecyclerView.OnScrollListener {
public static String TAG = EndlessRecyclerOnScrollListener.class
        .getSimpleName();

private int previousTotal = 0;
private boolean loading = true;
private int visibleThreshold = 5;
int firstVisibleItem, visibleItemCount, totalItemCount;

private int current_page = 1;

private LinearLayoutManager mLinearLayoutManager;

public EndlessRecyclerOnScrollListener(
        LinearLayoutManager linearLayoutManager) {
    this.mLinearLayoutManager = linearLayoutManager;
}

@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
    super.onScrolled(recyclerView, dx, dy);

    visibleItemCount = recyclerView.getChildCount();
    totalItemCount = mLinearLayoutManager.getItemCount();
    firstVisibleItem = mLinearLayoutManager.findFirstVisibleItemPosition();

    if (loading) {
        if (totalItemCount > previousTotal) {
            loading = false;
            previousTotal = totalItemCount;
        }
    }
    if (!loading
            && (totalItemCount - visibleItemCount) <= (firstVisibleItem + visibleThreshold)) {
        // End has been reached

        // Do something
        current_page++;

        onLoadMore(current_page);

        loading = true;
       }
   }

     public abstract void onLoadMore(int current_page);
}

在我的片段类中,我调用上面的类如下所示

代码语言:javascript
复制
mRecyclerView.setOnScrollListener(new EndlessRecyclerOnScrollListener(
            mLayoutManager) {
        @Override
        public void onLoadMore(int current_page) {
            if (SolutionEnterprises.mGetRCAAcceptedListDatas.size() < 100) {
                from = from + limit;
                new getHomeTicketList(false).execute();
            }
        }
    });

当我运行上面的代码时,当我在循环视图中滚动5项时,它会调用agian我的web,这很好,但是问题是当web在第5项后调用scrooll再循环查看第一位置,那么如何解决这个问题呢?

EN

回答 1

Stack Overflow用户

发布于 2017-01-24 12:57:53

代码语言:javascript
复制
you need to carefully with your adapter.

private ContractsAdapter contractListAdapter;

private void setAdapter(final ArrayList<ContractsModel> list) {
    if (contractListAdapter == null) {
            contractList = new ArrayList<>();
            contractList.addAll(list);
            contractListAdapter = new ContractsAdapter(this, contractList);
            rvContracts.setAdapter(contractListAdapter);
        } else {
            if (isLoadMore) {
                contractList.addAll(list);
                contractListAdapter.notifyDataSetChanged();
                isLoadMore = false;
            } else {
                contractList.clear();
                contractList.addAll(list);
                contractListAdapter.notifyDataSetChanged();
            }
        }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40434777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档