1

My AsyncTask загружает данные из json url и хранит в объекте. Он загружает все данные в объект один раз.RecyclerView Бесконечный прокрутка не работает с asynctask

itemname.add(new ITNAME(CID, itemName)); 

И он одновременно загружает данные на ресайклере. Я хочу, чтобы адаптер не показывать все данные сразу, я хочу, чтобы показать первые 10 пунктов и при прокрутке для завершения загрузки другой 10. Я добавил onScrolled метода в ресайклере адаптере:

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

     totalItemCount = linearLayoutManager.getItemCount(); 
     Log.e("Total Item Count:", String.valueOf(totalItemCount)); 
     visibleThreshold = linearLayoutManager.getChildCount(); 
     Log.e("Visi Item Count:", String.valueOf(visibleThreshold)); 
     lastVisibleItem = linearLayoutManager.findLastVisibleItemPosition(); 
     if (!loading && totalItemCount <= (lastVisibleItem + visibleThreshold)) { 
      // End has been reached 
      // Do something 
      if (onLoadMoreListener != null) { 
       onLoadMoreListener.onLoadMore(); 
      } 
      loading = true; 
     } 
    } 
}); 

Но он загружает все данные. Я думаю, что его из-за нагрузки асинхронной задачи данных сразу и передать его в адаптер:

mAdapter = new ITEMListAdapter(ITEMListActivity.this, itemname, recyclerview); 

Я не хочу изменить свою асинхронную задачу, потому что его работает отлично, и я хочу, чтобы данные быть извлечен сразу. Я попытался сделать так: https://gist.github.com/ssinss/e06f12ef66c51252563e, но не работает. Я много искал, но в большинстве случаев это http://android-pratap.blogspot.in/2015/01/endless-recyclerview-onscrolllistener.html, они используют цикл для загрузки ограниченных данных при запуске, а затем снова цикл при загрузке. Этот пример сильно отличается от моего кода, потому что мои данные предварительно загружаются в объект. Все, что я хочу, это то, что загружать ограниченные данные при запуске, а затем загружать следующий набор данных на прокрутку и т. Д.

+0

Никто не знает ??????? –

ответ

0

Если вы загружаете все свои данные, но хотите отобразить их часть (вы упомянули 10 предметов), чем просто разделить количество элементов в списках.

Первый содержит все данные, а второй пуст. При получении данных из асинтезы вырезают количество предметов из первого списка и помещают их в свой второй.

Второй список для вашего адаптера. После удаления и добавления элементов вы сообщаете ui, что в вашем списке есть новые элементы (например, notifyDataSetChanged). Когда прокрутка достигнет дна, вы повторяете это до тех пор, пока ваш первый список не станет пустым.

Надеюсь, это даст представление.

Смежные вопросы