Endlos Scrollen mit RecyclerView | Endless Scroll of RecyclerView

  • Antworten:0
Ludy
  • Admin
  • Forum-Beiträge: 7.958

16.05.2017, 21:28:32 via Website

private int firstVisibleItemPosition;
private int visibleItemCount;
private int totalItemCount;

private int start = 0;
private int end = 20;

private void initRecyclerView() {
    RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.recyclerView);
    layoutManager = new LinearLayoutManager(getContext());
    recyclerView.setLayoutManager(layoutManager);
    recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
            super.onScrolled(recyclerView, dx, dy);
            if (dy > 0) {
                visibleItemCount = layoutManager.getChildCount();
                totalItemCount = layoutManager.getItemCount();
                firstVisibleItemPosition = layoutManager.findFirstVisibleItemPosition();
                    if (end == totalItemCount && (firstVisibleItemPosition + visibleItemCount) == end) {
                        start = end;
                        end = end + 20;
                        new ApiReader(String.format("https://192.168.1.10/api/android/tutorial/?start=%d&end=%d", start, end), apiInterfaceSecond).execute();
                    }
            }
        }
    });
    new ApiReader(String.format("https://192.168.1.10/api/android/tutorial/?start=%d&end=%d", start, end), apiInterfaceFirst).execute();
}

private ApiInterface apiInterfaceFirst = new ApiInterface() {
    @Override
    public void getResult(ArrayList<String> arrayListString) {
        adapter = new CustomAdapter(context, arrayListString);
        recyclerView.setAdapter(adapter);
    }
}

private ApiInterface apiInterfaceSecond = new ApiInterface() {
    @Override
    public void getResult(ArrayList<String> arrayListString) {
        adapter.notifyData( arrayListString, recyclerView.getAdapter().getItemCount() - 1);
    }
}

private interface ApiInterface {
    void getResult(ArrayList<String> arrayListString);
}

Adapter Erweiterung


CustomAdapter#notifyData(ArrayList<String> arrayListString, int i) {
    this.listString.addAll( arrayListString );
    notifyDataSetChanged();
    notifyItemInserted(i);
}

Gruß Ludy (App Entwickler)

Mein Beitrag hat dir geholfen? Lass doch ein "Danke" da.☺

☕ Buy Me A Coffee ☕

Lebensmittelwarnung-App

✨Meine Wunschliste✨

📲Telegram NextPit News📲

swa00

Antworten