ArrayAdapter中的Android分页库

问题描述 投票:0回答:1

我怎样才能在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来构建它。我希望我的适配器能够观察到这一点。

android pagination android-livedata
1个回答
0
投票

您可以使用recycleler视图的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);
    }
  }
});
© www.soinside.com 2019 - 2024. All rights reserved.