2012-02-01 37 views
8

Tôi sử dụng ListView để hiển thị một số mục. row.xml tôi như sau:Nhận vị trí trong 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> 

Và tôi xác định myClick trong Hoạt động như sau:

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

Làm thế nào để biết vị trí mà buttom được bấm? Vị trí có nghĩa là giống như phương thức onListItemClick's.

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

Câu hỏi này đã được hỏi trước đó, hãy nhìn lên câu hỏi trước đăng. – JoxTraex

Trả lời

33

Hãy thử

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

Cảm ơn bạn rất nhiều vì điều đó! tại sao thông tin đó lại bị ẩn đi? – user1862770

1

Có vị trí trong onListItemNhấp giống với vị trí của mục được nhấp trong danh sách.

+0

Tôi có nghĩa là làm thế nào để có được vị trí trong phương pháp myClick – brian

1

Nếu tôi hiểu chính xác câu hỏi của bạn, bạn có một nút trong mỗi hàng của một ListView và bạn muốn biết hàng nào nhận được nhấp chuột vào nút. Bạn đang thực hiện một nút setOnClickListener() như thế nào? Lý do tôi hỏi đây là - nếu bạn đang đặt OnClickListener cho mỗi nút, bạn đã biết vị trí của nút đó.

+0

Tôi đã đặt onClick = "myClick" trong xml. – brian

+0

và xác định phương thức mới của myClick – brian

+0

Rất tiếc, tôi đã bỏ lỡ điều đó. – curioustechizen

2

Bạn cũng nên đọc tài liệu cho ListView và thậm chí có thể xem hướng dẫn có sẵn.

Biết tài liệu của bạn.

5

Bạn có thể thử như thế này.

Bước 1: Trong bộ chuyển đổi tùy chỉnh của bạn

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

Bước 2: Trong onclick nghe

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

Giải pháp hoàn hảo! Cảm ơn! – Nick

Các vấn đề liên quan