Android ArrayAdapter.Add 方法不起作用

Posted

技术标签:

【中文标题】Android ArrayAdapter.Add 方法不起作用【英文标题】:Android ArrayAdapter.Add method not working 【发布时间】:2011-07-04 18:21:33 【问题描述】:

ArrayAdapter.add() 方法对我不起作用。我正在使用带有 ADT 插件的 Eclipse Helios 3.6,目标源是 Froyo 2.2 模拟器和 2.2 HTC Evo 4g。这是我的java类

    import android.app.Activity;
    import android.os.Bundle;
    import android.widget.ArrayAdapter;

    public class Main extends Activity 

         @Override
        public void onCreate(Bundle savedInstanceState) 
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);

            String[] entries = "List Item A", "List Item B";

            ArrayAdapter<String> arrAdapt=new ArrayAdapter<String>(this, R.layout.list_item, entries);

             arrAdapt.setNotifyOnChange(true);
             arrAdapt.add("List Item C");
        
    

这是我的列表项布局 (list_item.xml)

<?xml version="1.0" encoding="utf-8"?>
<TextView
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_
  android:layout_>
  android:padding="10dp"
  android:textSize="12sp"
</TextView>

它在 LogCat 中给了我和错误,上面写着

原因: java.lang.UnsupportedOperationException 在 java.util.AbstractList.add(AbstractList.java:411) 在 java.util.AbstractList.add(AbstractList.java:432) 在 android.widget.ArrayAdapter.add(ArrayAdapter.java:178)

【问题讨论】:

【参考方案1】:

我只是在学习,但如果我正确阅读了source,ArrayAdapter 的构造函数不会复制对数组或列表中每个元素的引用。相反,它直接使用传入的列表,或者对于数组使用asList() 将原始数组视为列表。由于 asList() 返回的列表仍然只是底层数组的表示,因此您无法执行数组无法执行的任何操作(例如调整大小)。

尝试传递像 ArrayList 这样的列表而不是数组。

ArrayList<String> entries = 
        new ArrayList<String>(Arrays.asList("List Item A", "List Item B"));

ArrayAdapter<String> arrAdapt=
        new ArrayAdapter<String>(this, R.layout.list_item, entries);

arrAdapt.setNotifyOnChange(true);
arrAdapt.add("List Item C");

【讨论】:

如果这是正确的,ArrayAdapter 文档可能会更清晰。没有提到根据使用的构造函数添加元素的能力。 你说得对,这解决了我的问题,我的 LinearLayout 中的 ListView 现在可以工作了!

以上是关于Android ArrayAdapter.Add 方法不起作用的主要内容,如果未能解决你的问题,请参考以下文章

android:smoothScrollToPosition() 无法正常工作

Android逆向系列文章— Android基础逆向

Android 逆向Android 权限 ( Android 逆向中使用的 android.permission 权限 | Android 系统中的 Linux 用户权限 )

Android 逆向Android 权限 ( Android 逆向中使用的 android.permission 权限 | Android 系统中的 Linux 用户权限 )

android 21 是啥版本

Android逆向-Android基础逆向(2-2)