ListView问题,使用List而不是Array

时间:2013-08-18 23:22:17

标签: java android

我正在尝试设置一个ListView,我可以使用一个简单的String []数组来完成它,你可以在代码中看到。

稍后,我注释掉了Array并使用了List

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

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

ArrayAdapter(Context context,int resource,List objects)

为什么我收到NullPointerException?

如何使其与List而不是数组一起使用?

提前致谢!

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();
    }

}

2 个答案:

答案 0 :(得分:2)

您忘记使用任何内容初始化days字段,因此在调用add方法时它仍为null。在days.add(0, "Sunday");行之前,添加以下内容:

days = new ArrayList<String>();

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

答案 1 :(得分:1)

您需要创建days

List<String> days = new ArrayList<String>();

例如。