我使用ListView来显示几个项目。 我的row.xml如下:
<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>
我在Activity中定义了myClick,如下所示:
public void myClick (View v) {
LinearLayout vwParentRow = (LinearLayout)v.getParent();
//How to get the position
}
如何知道点击它的位置? 该位置与onListItemClick的方法相同。
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
}
答案 0 :(得分:35)
尝试
public void DetailClick(View v) {
ListView lv = getListView();
int position = lv.getPositionForView(v);
}
答案 1 :(得分: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();
}
答案 2 :(得分:1)
是的,onListItemClick中的位置与列表中单击的项目的位置相同。
答案 3 :(得分:1)
如果我正确理解了您的问题,那么ListView
的每一行都有一个按钮,您想知道哪一行收到按钮点击。你是如何在按钮上做setOnClickListener()
的?我问这个的原因是 - 如果你为每个按钮设置OnClickListener
,你就已经知道了那个按钮的位置。
答案 4 :(得分:1)
您还应该阅读ListView的文档,甚至查看可用的方法及其示例代码。
了解您的文档。