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 的第二行变为“n2”,而第一行保持不变......但由于某种原因,它似乎不是正确的方法。我已经尽可能多地搜索了,但我没有设法在上面找到任何东西。请帮助我理解为什么第一种方法不起作用。

4

1 回答 1

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

对于您的目的不正确,您不调用getViewgetView由适配器调用以返回您在 ListView 中显示的视图;如果您愿意,getView如果您通过扩展 ArrayAdapter(例如)创建自定义适配器,则可以覆盖。

你可以看看这个链接

于 2013-02-27T13:40:24.137 回答