2013-06-16 42 views
5

Tôi đang sử dụng ListView làm chế độ xem phụ trong SlidingPaneLayout của tôi. Chế độ xem chính là một đoạn bản đồ. ListView hoạt động như một menu. Vấn đề là onItemClickedListener không bao giờ được gọi trên ListView. Ngay cả hàng danh sách không bao giờ được đánh dấu trên báo chí. có vẻ như ListView không thể lấy tiêu điểm.Android, SlidingPaneLayout và listView

EDIT: thực sự, slidingPaneLayout.findFocus() hiển thị android.widget.ListView. vẫn không có may mắn khi nhấp vào các mục danh sách.

Đây là xml tôi

<com.ziz.luke.custom_components.MySlidingPaneLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/slidingpanelayout" 
android:layout_width="match_parent" 
android:layout_height="match_parent" > 

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <ListView 
     android:id="@+id/contactsList" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:background="#00000000" > 
    </ListView> 

    <TextView 
     android:id="@+id/android:empty" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" 
     android:gravity="center_horizontal|center_vertical" 
     android:text="@string/noContacts" /> 
</RelativeLayout> 

<fragment 
    android:id="@+id/map" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    class="com.google.android.gms.maps.SupportMapFragment" /> 
</com.ziz.luke.custom_components.MySlidingPaneLayout> 

Làm thế nào tôi có thể giải quyết này ??

+0

dán mã nơi bạn thiết lập người nghe của bạn, nếu danh sách của bạn đang tập trung và xem có vẻ đúng, thì vấn đề có thể không nằm trong bố cục xml của bạn. Ngoài ra, làm thế nào để bạn hiển thị/ẩn 'rỗng'? – edthethird

+0

Đó là những gì tôi đã làm. cùng một vấn đề. và tôi đoán đó là một cái gì đó liên quan đến bản thân SlidingPaneLayout. –

+0

bạn cũng có thể đăng mã java không? – edthethird

Trả lời

6

Tôi đã tìm thấy câu trả lời. Tôi đã sử dụng một lớp con của SlidingPaneLayout trong đó tôi được trọng

onInterceptTouchEvent(MotionEvent arg0) 

Tôi đã cố gắng để làm như sau:

  • mở SlidingPaneLayout useing một nút.
  • đóng trượtPaneLayout bằng cách sử dụng nút.
  • đóng thao tác trượt bằng cách trượtPaneLayout.
  • ngăn người dùng mở trượtPaneLayout bằng cách vuốt.

Vì vậy, tôi đã tạo một boolean bên trong lớp con của tôi được gọi là shouldSwipe để được trả về từ phương pháp ghi đè.

việc thực hiện đã gây ra vấn đề là:

@Override 
    public boolean onInterceptTouchEvent(MotionEvent arg0) { 

     return shouldSwipe; 
    } 

nó gây ra vấn đề bất cứ khi nào (shouldSwipe = true) bởi vì nó nói với hệ thống mà các sự kiện liên lạc đã được tiêu thụ và ngăn ngừa nó khỏi bị phổ biến.

tôi giải quyết rằng việc sử dụng này một:

@Override 
    public boolean onInterceptTouchEvent(MotionEvent arg0) { 
     // TODO Auto-generated method stub 
     return shouldSwipe ?super.onInterceptTouchEvent(arg0):shouldSwipe; 
    } 

đó là nó.

+0

Xin chào, tôi đang sử dụng slidingUpPanelLayout cho ứng dụng của mình. Tôi có thể xem được với bảng điều khiển. nhưng tôi không thể vuốt nó theo chiều dọc. Bạn có thể giúp tôi vì điều này không. –

3

Tôi vừa tạo một dự án mẫu bằng cách sử dụng SlidingPaneLayout.

Tôi không sử dụng bất kỳ bản đồ nào vì không có vấn đề ở đâu, vì vậy tôi chỉ tham khảo vị trí của bản đồ bằng một TextView. Tôi đã sử dụng một ListFragment đang làm việc và nhận được các trình nghe nhấp chuột. Xin vui lòng tải dự án từ đây:

https://dl.dropboxusercontent.com/u/33565803/StackOverFlowExamples/SlidingPaneLayoutExample.zip

Hãy cho tôi biết nếu bạn có bất kỳ vấn đề cấu hình và nếu nó giải quyết vấn đề của bạn;)

(Tôi đang sử dụng ActionBarSherlock chỉ vì tôi đang sử dụng để, vì vậy bạn có thể xóa nó nếu bạn muốn)