【问题标题】:Android Pagination library in ArrayAdapterArrayAdapter 中的 Android 分页库
【发布时间】:2018-09-17 20:48:46
【问题描述】:

如何使用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&lt;PagedList&lt;String&gt; categories 的方法。我正在使用LivePagedListBuilder 来构建它。我希望我的适配器对此进行观察。

【问题讨论】:

  • 最好使用RecyclerView和分页库Here你可以找到一些帮助
  • 我想在 AutocompleteTextView 中使用它
  • 那我不认为分页库可用于列表视图,最好用这个Solution

标签: android pagination android-livedata


【解决方案1】:

您可以使用回收器视图的 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);
    }
  }
});

【讨论】:

  • 我要使用分页库
  • 嗯,我使用这种方法,它完美无缺。顺便说一句,我用实现这一点所需的代码更新了上面的答案。
  • 我知道上面的代码有效,但我的要求完全不同。我不需要回收站视图。我在 AutocompleteTextView 上使用 ArrayAdapter。
猜你喜欢
  • 1970-01-01
  • 2014-11-13
  • 2017-12-03
  • 1970-01-01
  • 2013-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-04
相关资源
最近更新 更多