【问题标题】:What is the benefit of turning a String array into an ArrayList before populating a AutoCompleteTextView with it?在用它填充 AutoCompleteTextView 之前将 String 数组转换为 ArrayList 有什么好处?
【发布时间】:2018-03-29 08:17:02
【问题描述】:

在材料页面上,我找到了AutoCompleteTextView 的以下示例:

int layoutItemId = android.R.layout.simple_dropdown_item_1line;
String[] dogArr = getResources().getStringArray(R.array.dogs_list);
List<String> dogList = Arrays.asList(dogsArr);
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, layoutItemId, dogList);

AutoCompleteTextView autocompleteView =
(AutoCompleteTextView) findViewById(R.id.autocompleteView);
autocompleteView.setAdapter(adapter);

来源:https://materialdoc.com/components/autocomplete/

这部分的重点是什么:

List<String> dogList = Arrays.asList(dogsArr);

AutoCompleteTextView 也采用 String 数组时,为什么要把它变成 ArrayList?

【问题讨论】:

    标签: android autocompletetextview


    【解决方案1】:

    当您知道只使用固定数量的元素时,您应该使用 Array.如果没有,请使用列表。

    我的个人意见是使用列表。列表使代码非常不灵活且易于使用。

    【讨论】:

      【解决方案2】:
      • 您可以在编译时初始化 Java 数组,例如:

      字符串数据[] = { "a", "b", "c" };

      • 在旧版本的 Java 中也存在类型安全问题。 ArrayList 元素必须转换为原始类型,而 Java 数组的类型安全。
      • Java 数组是语言的一部分,您无法更改它们。 ArrayList 是 Java API 的一部分。如果您需要(但我不推荐),您可以替换您自己的库来实现 ArrayList 作业

      查看此问题了解更多信息

      See This question

      【讨论】:

        【解决方案3】:

        如果你有一个数组,它必须有一个固定的大小。动态添加和删除元素很难管理,每次添加新项目时都必须创建新数组。删除项目也是如此。

        使用 ArrayList 很容易管理,因为它不是使用静态大小创建的。因此,您可以在运行时轻松添加和删除元素。

        ArrayList 是在这里使用的理想数据结构。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-12-26
          • 2011-08-20
          • 1970-01-01
          • 2021-05-17
          • 1970-01-01
          • 2017-11-09
          • 2012-06-23
          相关资源
          最近更新 更多