我是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”,而第一行保持不变......但由于某种原因,它似乎不是正确的方法。 我尽可能多地搜索,但我没有找到任何东西。 请帮助我理解为什么第一种方法不起作用。
答案 0 :(得分:0)
CheckedTextView v =(CheckedTextView) adapter.getView(1, null, null);
v.setText("n1");
对于您的目的不正确,您不调用getView
,适配器调用getView
以返回您在ListView中显示的视图;如果您愿意,可以通过扩展ArrayAdapter(例如)创建自定义适配器来覆盖getView
。