2014-01-21 42 views
1

我目前正在設計一個遊戲中的商店,現在所面臨的項目列表中選擇一個問題,買:獲取點擊查看從onItemClickListener

我有一個的ListView含RelativeLayouts作爲項目 - 在每個RelativeLayout是兩個內部的RelativeLayouts,其中包含項目。

我想找出如果用戶點擊買入在ITEM1或ITEM2 - 但是我發現沒有辦法在onItemClickListener得到這個。 問題是,如果我使用onClickListener而不是onItemClickListener,我有項目(一個或兩個),但沒有行 - 所以我總是有行或列。

基本上,我需要從onItemClickedListener獲得實際點擊的物品的ID - 有沒有什麼辦法可以做到這一點?

Sketch of Layout

+0

做你的列表中的項目可以點擊過或者只是你的購買按鈕點擊?如果兩者都可以點擊,你將不得不做一個自定義的onClickListener –

+0

我可以捕獲兩個,點擊ListItems和按鈕點擊 –

回答

3

在Adapter's getView(一個標籤添加到您的按鈕(button.setTag(位置)))然後在onClickListener調用view.getTag()以檢索索引

+0

我可以確定_onItemClickListener_總是在_onClickListener_之前調用嗎? (如果我理解你的權利,這將是必要的) –

+0

你不應該添加onItemClickListener到你的ListView。您應該做的唯一事情是在getView()方法的adapter類中寫入relativeLayout.setOnClickListener(),並使用一個接口調用主類中的方法。別忘了,您的relativeLayouts應該有focusableInTouchMode設置爲true – Eddy

+0

但是我需要獲取被點擊的項目的行 - 爲此,我需要onItemClickListener,還是有另一種方式? –

0

你應該onClickListner它從你的適配器getView方法RelativeLayouts.Do添加到您的孩子。

+0

如何獲得點擊按鈕的行? (在_ListView_中的位置) –

0

設置onClickListener到你的購買按鈕。在購買按鈕上,您可以附加該位置的標籤,並將其以onClick方法進行檢索。

getView()

btnBuy.setOnClickListener(this); 
btnBuy.setTag(position); 

onClick方法

int position=Integer.parseInt(view.getTag().toString()); 
+0

我可以確定_onItemClickListener_總是在_onClickListener_之前調用嗎? (如果我理解你的話,那將是必要的) –

+0

是的。在其子視圖獲取onClick之前,將調用listView的OnItemClick。 –