2012-02-01 121 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

相关问题