2013-02-27 84 views
0

我是新來的Android和我試圖理解爲什麼下面的代碼不工作:試圖瞭解getView()和適配器

... 

    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

我不明白你爲什麼要這樣做'adapter.getView設置文本()'。無論如何,你不應該自己調用'getView()'。要顯示的數據應包含在'mats'數組中。 – m0skit0 2013-02-27 13:23:02

回答

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

是不是你的目的是正確的,你不叫getViewgetView由適配器名爲返回你的觀點在ListView中顯示;如果你喜歡,你可以重寫getView如果你通過擴展ArrayAdapter(例如)創建一個自定義適配器。

You can have a look at this link

+0

我把它全錯了... 謝謝:) – QQsas 2013-06-04 07:45:43