0

私はAndroidが初めてで、次のコードが機能しない理由を理解しようとしています:

...

    matList = (ListView) findViewById(android.R.id.list);
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_multiple_choice, mats);
    matList.setAdapter(adapter);
    matList.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
    matList.setOnItemClickListener(this);

    CheckedTextView v =(CheckedTextView) adapter.getView(1, null, null);
                    v.setText("n1");

特定の行のテキストが変更されることはありません。このようにアイテムをクリックして実行する別の方法を見つけました(上から続く):

    matList.performItemClick(adapter.getView(i, null, matList), 2, 2);
}

public void onItemClick(AdapterView<?> arg0, View v, int p, long arg3) {

    CheckedTextView mat = (CheckedTextView) v;
    mat.setText("n2");
}

それはうまくいきます... ListViewの2行目は「n2」になり、最初の行は同じままです...しかし、何らかの理由でそれを行う正しい方法とは思えません。できる限り検索しましたが、何も見つかりませんでした。最初の方法が機能しない理由を理解するのを手伝ってください。

4

1 に答える 1

0
CheckedTextView v =(CheckedTextView) adapter.getView(1, null, null);
                v.setText("n1");

あなたの目的には正しくありません。あなたは呼び出しません.ListViewgetViewgetView表示されたビューを返すためにアダプターによって呼び出されます。getView必要に応じて、ArrayAdapter (たとえば) を拡張してカスタム アダプターを作成するかどうかをオーバーライドできます。

このリンクで見ることができます

于 2013-02-27T13:40:24.137 に答える