0

ListView を設定しようとしていますが、コードでわかるように、単純な String[] Array を使用してそれを行うことができました。

後で、配列をコメントアウトしてリストを使用しました

私の問題は、リストを使用したいときに始まり (内容を操作する必要があるため)、単純な配列を動的に変更することはできません。リストを使用すると、ArrayAdapter を作成するときに NullPointerException が発生し、その理由がわかりません。

ArrayAdapter のドキュメントで、6 つの異なるコンストラクターでオーバーロードされており、そのうちの 1 つが

ArrayAdapter (コンテキスト コンテキスト、int リソース、リスト オブジェクト)

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

}
4

2 に答える 2

2

daysフィールドを何かで初期化するのを忘れたので、addメソッドを呼び出しても null のままです。行の前に、days.add(0, "Sunday");これを追加します。

days = new ArrayList<String>();

また、インデックス番号を取り出します。などを使用するだけdays.add("Sunday"); days.add("Monday");です。

于 2013-08-18T23:24:42.810 に答える
1

作成する必要がありますdays:

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

例えば。

于 2013-08-18T23:26:16.123 に答える