2012-02-01 163 views
8

我使用ListView顯示多個項目。 下面我row.xml:在ListView中獲取位置

<TextView android:text="text" 
android:id="@+id/tvViewRow" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content"> 
</TextView> 
<Button android:text="Click me!" 
android:id="@+id/BtnToClick" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:onClick="myClick"> 
</Button> 

而且我在下面活動定義了MyClick:

public void myClick (View v) { 
LinearLayout vwParentRow = (LinearLayout)v.getParent(); 
//How to get the position 
} 

如何知道其位置BUTTOM被點擊? 這個位置的意思與onListItemClick的方法相同。

@Override 
protected void onListItemClick(ListView l, View v, int position, long id) { 
} 
+0

這個問題已經被問過,請提前查找問題張貼。 – JoxTraex 2012-02-01 09:05:54

回答

33

嘗試

public void DetailClick(View v) { 
ListView lv = getListView(); 
int position = lv.getPositionForView(v); 
} 
+1

非常感謝你!爲什麼這些信息如此隱藏? – user1862770 2015-04-14 07:44:50

1

是在onListItemClick的位置是一樣的項目的位置在列表中點擊。

+0

我的意思是如何在myClick方法中獲得位置 – brian 2012-02-01 09:09:13

1

如果我正確理解您的問題,您在ListView的每一行中都有一個按鈕,並且您想知道哪一行接收到按鈕單擊。你在按鈕上做什麼setOnClickListener()?我問這個問題的原因是 - 如果你爲每個按鈕設置了OnClickListener,你已經知道該按鈕的位置。

+0

我在xml中設置了onClick =「myClick」。 – brian 2012-02-01 09:42:37

+0

並定義myClick的新方法 – brian 2012-02-01 09:42:59

+0

糟糕對不起,我錯過了這一點。 – curioustechizen 2012-02-01 09:44:02

2

您還應該閱讀ListView的文檔,甚至可以查看可用的教程。

瞭解您的文檔。

5

你可以試試這個。

第1步:在您的自定義適配器

@Override 
public view getView(int position, View convertView, ViewGroup parent){ 
.......//Perform your logic 
    convertView.findViewById(R.id.BtnToClick).setTag(position); 
    return convertView; 
} 

步驟2:在的onclick監聽

public void myClick (View v) { 
    LinearLayout vwParentRow = (LinearLayout)v.getParent(); 
    position=(Integer) v.getTag(); 
    } 
+0

完美的解決方案!謝謝! – Nick 2013-11-12 08:40:58

相關問題