试图了解getView()和Adapters

时间:2013-02-27 13:19:36

标签: android listview checkedtextview

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

1 个答案:

答案 0 :(得分:0)

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

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

You can have a look at this link