java - ListView 问题,使用 List 而不是 Array

标签 java android

我正在尝试设置一个 ListView,并且我能够使用简单的 String[] 数组来完成此操作,如您在代码中看到的那样。

后来我注释掉了Array并使用了List

当我想使用列表(因为我需要操作内容)并且简单的数组无法动态更改时,我的问题就开始了。 当我使用 List 时,在创建 ArrayAdapter 时出现 NullPointerException,但我不知道为什么。

我在 ArrayAdapter 的文档中读到它重载了 6 个不同的构造函数,其中之一是

ArrayAdapter(Context上下文,int资源,List对象)

为什么我会收到 NullPointerException?

我应该怎么做才能使其与列表而不是数组一起使用?

提前致谢!

public class MainActivity extends Activity implements OnItemClickListener {

ListView l;

// String[] days = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};

List<String> days;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        days.add(0, "Sunday");
        days.add(1, "Monday");
        days.add(2, "Tuesday");
        days.add(3, "Wednesday");
        days.add(4, "Thursday");
        days.add(5, "Friday");
        days.add(6, "Saturday");


        l = (ListView) findViewById(R.id.listView1);

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, days);
        l.setAdapter(adapter);
        l.setOnItemClickListener(this);

    }

    @Override
    public void onItemClick(
            AdapterView<?> adapterView, // ListView that was clicked
            View view, // Reference to the row that was clicked (each row is a TextView)
            int i, // position
            long l) { // id of the TextView that was clicked

        Toast.makeText(this, days.get(i) + " " + i, Toast.LENGTH_LONG).show();
    }

}

最佳答案

您忘记初始化days字段包含任何内容,因此当您调用 add 时它保持为空方法。之前 days.add(0, "Sunday");行,添加此:

days = new ArrayList<String>();

另外,取出索引号。只需使用 days.add("Sunday"); days.add("Monday"); ,等等。

关于java - ListView 问题,使用 List 而不是 Array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18304611/

相关文章:

java - Android SQLite - SQLiteDatabase.replace() 实际上做了什么?

java - @NotNull : validation custom message not displaying

java - 如何在运行时创建xml文件?

android - 改造和 jackson : JsonParseException on String response

android - 在 Android 中使用 GoogleMaps 出现 NullPointerException

java - 可运行崩溃中的 HTTPPost

java - 为什么我的 RESTful API 在执行 SQL 查询时如此慢?但当我刚刚运行查询时速度很快

Java xpath,选择最深的 child

java - 名称包含来自循环的值的变量声明

android - 如何以编程方式设置 textView 的样式?