【问题标题】:load large amount of data in android spinner blocks UI在 android spinner blocks UI 中加载大量数据
【发布时间】:2020-04-24 15:48:34
【问题描述】:

我正在activities 之一的Android app 项目中工作我有一个spinner 我使用过

https://github.com/miteshpithadiya/SearchableSpinner

正如我所愿,我的spinner 可以按项目名称过滤,并且效果很好。

但我想在我的spinner 中加载大量项目(大约 70000 个项目)。我的微调器可以加载此数量,但我的 UI 响应需要很长时间。

我知道有些做法建议使用paging 和其他可能的解决方案,但我现在不能使用它们,而且我尝试使用AsyncTask 使这个过程成为background 过程但它没有也不行。

这是我在微调器中加载项目的代码(ArrayList 商品可能包含 70000 个项目):

private void prepareProductsSpinner() {
    productsSpinner = findViewById(R.id.spinnerProduct);

    ArrayList<Good> goods = (ArrayList<Good>) Good.listAll(Good.class);

    //fill data in spinner
    ArrayAdapter<Good> adapter = new ArrayAdapter<>(AddEditAssetTakingItemActivity.this, android.R.layout.simple_spinner_dropdown_item, goods);
    productsSpinner.setAdapter(adapter);
    productsSpinner.setTitle("Choose an item");
    productsSpinner.setPositiveButton("Select");
}

我该如何解决这个问题?

【问题讨论】:

  • 你是怎么解决的?
  • @b-developer 我使用了另一个具有回收站视图的活动来显示所有产品,当用户选择一个项目时,我已经返回了该项目的 id 并将该项目加载到该微调器中。跨度>

标签: android android-spinner large-data


【解决方案1】:

您可以在微调器回收视图中显示数组列表。 RecyclerView 更强大、更灵活。它不会冻结用户界面。它支持使用 Viewholder 模式,可以包含 100k+ 行,运行非常流畅。 Spinner with recylerview.

【讨论】:

  • 好的,我会尝试并告诉你。
  • 建议的解决方案对我不起作用。问题在于在单个 Spinner 中加载项目的机制而不是向 Activity 添加多个 Spinner。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-05-02
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 2012-01-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多