2012-12-24 31 views
4

自定義列表視圖中獲取數據我有兩個TextViews都包含不同的值自定義的ListView。我希望能夠做到這一點,當點擊一個項目時,從這些TextView中的一個獲取內容。從點擊

這是我到目前爲止的代碼:

listView.setOnItemClickListener(new OnItemClickListener() { 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
String value; 
// value = (get value of TextView here) 
    } 
}); 

我希望能夠分配到value的TextView的的一個文本。

回答

9

雖然@山姆的建議將在大多數情況下工作得很好,其實我更喜歡用附帶的AdapterViewonItemClick(...)此:

public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
    Person person = (Person) parent.getItemAtPosition(position); 
    // ... 
} 

我認爲這是一個稍微防呆的方法,因爲該AdapterView將考慮到可能潛在使用ListView.addHeaderView(...)添加任何報頭視圖。

例如,如果你的ListView包含一個報頭,攻絲由所述適配器提供將導致具有1的值(而不是0,這是默認的情況下爲無標頭)的position變量的第一個項目,因爲標題佔據位置0。因此,很容易錯誤地檢索某個頭寸的錯誤數據,併爲最後一個列表項引入ArrayIndexOutOfBoundsException。通過檢索AdapterView中的項目,位置會自動正確偏移。你當然也可以手動修正它,但爲什麼不使用提供的工具呢? :)

僅供參考和FWIW。

3

您有幾種選擇。我參考了您的previous question的代碼。

ViewHolder holder = (ViewHolder) view.getTag(); 
// Now use holder.name.getText().toString() and holder.description as you please 
  • 您可以position訪問適配器:

    • 您可以從該行的佈局view訪問此數據

      Person person = mAdapter.getItem(position); 
      // Now use person.name and person.description as you please 
      

    (在路上你的人員類別namedescription分別爲public,所以你不需要get方法)

  • +0

    這是很好的答案 – Rasel

    0

    覆蓋以下在adaterclass方法。

    public String[] getText() { 
         return text; 
        }