2015-07-26 3 views
0

Я знаю, что это было задано раньше, но я не выигрываю. У меня есть набор данных на моем веб-сервере с тысячами записей, и я хочу заполнить список recyclerview 20 за раз. Как загрузить данные из массива? Я не думаю, что загрузка одной тысячи на ходу - это оптимальный выбор, потому что он требует много времени и также использует много данных. У меня есть следующий код, который позволяет мне определить, достиг ли я конца текущего списка, используя статические данные, но я не знаю, как я должен реализовать задачу Async.Endless RecyclerView Scroll

Вот мой свиток Слушатель:

public abstract class EndlessRecyclerScroll extends RecyclerView.OnScrollListener { 

    public static String TAG = EndlessRecyclerScroll.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 linearLayoutManager; 

    public EndlessRecyclerScroll(LinearLayoutManager linearLayoutManager){ 
     this.linearLayoutManager = linearLayoutManager; 
    } 

    @Override 
    public void onScrolled(RecyclerView recyclerView, int dx, int dy){ 
     super.onScrolled(recyclerView,dx,dy); 
     visibleItemCount = recyclerView.getChildCount(); 
     totalItemCount = linearLayoutManager.getItemCount(); 
     firstVisibleItem = linearLayoutManager.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); 
} 

Это моя основная деятельность, что малообъемных сборных грузов на статические данные:

public class MainActivity extends AppCompatActivity { 
    List<String> list; 
    RecyclerView recyclerView; 
    LinearLayoutManager linearLayoutManager; 
    RVAdapter rvAdapter; 
    private static int current_page = 1; 
    private int ival = 1; 
    private int loadLimit = 10; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     list = new ArrayList<>(); 
     loadData(current_page); 
     setRecyclerView(); 
     recyclerView.setOnScrollListener(new EndlessRecyclerScroll(linearLayoutManager) { 
      @Override 
      public void onLoadMore(int current_page) { 
       loadMoreData(current_page); 
      } 
     }); 
    } 

    void setRecyclerView(){ 
     recyclerView = (RecyclerView)findViewById(R.id.itemRV); 
     recyclerView.setHasFixedSize(true); 
     linearLayoutManager = new LinearLayoutManager(this); 
     recyclerView.setLayoutManager(linearLayoutManager); 
     rvAdapter = new RVAdapter(list); 
     recyclerView.setAdapter(rvAdapter); 

    } 

    void loadData(int current_page){ 
     for (int i = ival; i <= loadLimit; i++) { 
      list.add("Item "+i); 
      ival++; 
     } 
    } 
    private void loadMoreData(int current_page) { 

     // I have not used current page for showing demo, if u use a webservice 
     // then it is useful for every call request 

     loadLimit = ival + 10; 

     for (int i = ival; i <= loadLimit; i++) { 
      list.add("Item "+i); 
      ival++; 
     } 

     rvAdapter.notifyDataSetChanged(); 

    } 

Я последовал за руководство от сюда, чтобы достичь этого: http://android-pratap.blogspot.com/2015/01/endless-recyclerview-onscrolllistener.html?m=1

Помогите? Пожалуйста,

ответ

0

Хорошо, мне удалось решить эту проблему, предположим, что сначала я был ленив. Таким образом, все, что мне нужно было сделать, это понять концепцию разбивки на страницы в PHP и отправить число с добавленной страницей на php-скрипт.

Для тех, кто может быть новым для этой целой вещи, просто следить за этим две ссылки:

http://android-pratap.blogspot.com/2015/01/endless-recyclerview-onscrolllistener.html?m=1

http://www.phpfreaks.com/tutorial/basic-pagination

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