2010-06-06 28 views
6

Tôi có khá phức tạp ListView. Mỗi mục trông giống như sau:Các mục ListView không thể nhấp được với HorizontalScrollView bên trong

> LinearLayout (vertical) 
    > LinearLayout (horizontal) 
    > include (horizontal LinearLayout with two TextViews) 
    > include (ditto) 
    > include (ditto) 
    > TextView 
    > HorizontalScrollView (this guy is my problem) 
    > LinearLayout (horizontal) 

Trong hoạt động của tôi, khi một mục được tạo ra (getView() được gọi là) tôi thêm động TextView s đến LinearLayout bên trong HorizontalScrollView (ngoài đầy những thứ khác, đơn giản hơn ra). Thật ngạc nhiên, hiệu suất là khá tốt.

Vấn đề của tôi là khi tôi thêm HorizontalScrollView, các mục trong danh sách của tôi trở nên không thể nhấp được. Họ không nhận được nền màu da cam khi được nhấp và họ không kích hoạt OnItemClickedListener Tôi đã thiết lập (để thực hiện cuộc gọi Log.d đơn giản).

Làm cách nào để tôi có thể hiển thị lại các mục trong danh sách của mình?


Edit: thiết android:descendantFocusability="blocksDescendants" trên topmost LinearLayout dường như làm việc. Tôi muốn biết nếu có những cách khác, mặc dù: nếu tôi muốn các mục có thể tập trung trong các mục danh sách của tôi?

Trả lời

8

Sử dụng android:descendantFocusability="blocksDescendants" ở trên cùng LinearLayout đã thực hiện thủ thuật. Các phần tử bên trong vẫn có thể được tạo thành "có thể nhấp", chúng không thể tập trung được (nghĩa là bạn không thể nhấp vào chúng trên thiết bị không có màn hình cảm ứng). Đủ tôt cho tôi.

0

khi tôi áp dụng HorizontalScrollView để di chuyển TableLayout của tôi là làm việc tốt nhưng không thể click vào mục danh sách bố trí của tôi là như follwos

LinearLayout HorizontalScrollView TableLayout ......... /TableLayout /HorizontalScrollView /LinearLayout

tôi áp dụng android: descendantFocusability = "blocksDe scendants "to linearlayout hàng đầu của tôi Bất kỳ trợ giúp nào

0
android:descendantFocusability="blocksDescendants" 

không giúp ích gì cho tôi. Vì vậy,

Vì vậy, tôi đã nhận ra người nghe.

public interface EventListItemOnClickListener { 
    public void itemClicked(); 
} 

Và trong bộ chuyển đổi thông báo cho tất cả người nghe

private List<EventListItemOnClickListener> listeners; 
protected void notifyOnClick(int position){ 
    for(int i=0; i<listeners.size();++i) 
    listeners.get(i).itemClicked((Event)events.get(position)); 
} 
... 
    @Override 
    public void onClick(View v) { 
     notifyOnClick(position); 
    } 
... 
Các vấn đề liên quan