ArrayAdapter中的Android分页库

时间:2018-09-17 12:21:46

标签: android pagination android-livedata

如何使用ArrayAdapter中的分页库(我不想使用ListViewRecyclerView)? categories是要显示的字符串列表。我有很多类别。我希望它是分页的。如何实现呢?

List<String> categories = getSomeCategories();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(context, android.R.layout.select_dialog_item, categories);
autoCompleteTextView.setAdapter(adapter);

我有一个返回LiveData<PagedList<String> categories的方法。我正在使用LivePagedListBuilder来构建它。我希望我的适配器对此进行观察。

1 个答案:

答案 0 :(得分:0)

您可以使用回收者视图的OnScrollListener检测滚动,然后检查可见元素是否为页面中的最后一个元素,如果是,则加载另一个页面。

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {

  @Override
  public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
    super.onScrolled(recyclerView, dx, dy);
    int visibleItemsCount = layoutManager.getChildCount();
    int totalItemsCount = layoutManager.getItemCount();
    int pastVisibleItems = layoutManager.findFirstVisibleItemPosition();
    int lastCompletelyVisibleItem = layoutManager.findLastCompletelyVisibleItemPosition();
    if (dy >= 0
        && (visibleItemsCount + pastVisibleItems) >= totalItemsCount
        && lastCompletelyVisibleItem == elements.size() - 1) {
      offset = elements.size();
      //Start at this offset
      populateRecyclerView(offset);
    }
  }
});