2013-10-20 35 views
0

我創建了一個具有ID爲text1和text2的兩個TextView的自定義列表視圖。 text1顯示一個地方,text2顯示一個描述。起初,當我實現了onListItemClicked方法並將數據送入一個吐司時,它顯示了第一個textview中的數據,這是text1中的地方。現在想從文本中提取2,所以找到了某人在S/O上提出的答案,但現在只從第一個列表項的text2中提取數據,而不是我點擊的地方。任何想法如何動態獲取數據?不熟悉數據源,因此所有數據都在2列中,或者沒有辦法,我必須從包含說明的第二個數組中獲取該位置的數據?
從自定義列表類的某些代碼:
從自定義列表視圖中提取數據

@Override 
protected void onListItemClick(ListView l, View v, int position, long id) { 
    View parentView =(View)v.getParent(); 
    String text; 
    text=((TextView) parentView.findViewById(R.id.text2)).getText().toString(); 
     Toast.makeText(this, text+" !here(description)", 
     Toast.LENGTH_LONG).show(); 
} 
+1

顯示你的getview – Raghunandan

+0

你能不能分享你的自定義列表類 – Raghunandan

+0

getView只是通過從各個數組的數據獲取各個索引處的數據並將其饋送到每個textview中來擴充列表,仍然需要代碼? – Manny265

回答

2

視圖VonListItemClick代表的ViewGroup你點擊了排。因此,您不需要getParent方法。更改您的代碼如下:

@Override 
protected void onListItemClick(ListView l, View v, int position, long id) 
{ 
    String text; 
    text=((TextView) v.findViewById(R.id.text2)).getText().toString(); 
    Toast.makeText(this, text+" !here(description)", Toast.LENGTH_LONG).show(); 
} 

父視圖,因爲你有它,會引用整個ListView的視圖層次結構。在那裏,將會有多個視圖,每個視圖都包含一個id爲== R.id.text2的TextView。我猜想findViewById只會抓住它在該層次結構中找到的第一個,這就是爲什麼它總是從第一行返回值。

+0

如果op在這種情況下使用'parentView',會出現什麼問題 – Raghunandan

+2

@Raghunandan,至於parentView,AFAIK,它會引用整個ListView的視圖層次結構。在那裏,將會有多個視圖,每個視圖都包含一個id爲== R.id.text2的TextView。我猜想findViewById只會抓住它在該層次結構中找到的第一個,這就是爲什麼它總是從第一行返回值。 –

+0

將此內容添加到你的博客中回答了實際問題 – Raghunandan

相關問題