2013-09-03 16 views
6

bir OnItemLongClickListener sürükleyip sort-liste görünümü sağlayan. Ben oluşturma dragsort etkinleştirdiğinizdeNullPointerException zaman bir ListFragment içinde sürükle sort-liste görünümü (<a href="https://github.com/bauerca/drag-sort-listview">https://github.com/bauerca/drag-sort-listview</a>) kullanıyorum bir liste görünümü

şeyler çalışıyoruz. Ancak, liste görünümündeki öğelerden birinde bir longclick'e kadar onu devre dışı bırakmak istiyorum.

Yani 3 yerde

mDslv.setDragEnabled(false); 

ayarlamak istiyorum: onCreateView(), DragSortListView.DropListener ve DragSortListView.RemoveListener

benim ListFragment, ben var:

 listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener(){ 
      @Override 
      public boolean onItemLongClick(AdapterView<?> av, View v, int pos, long id) { 
       mDslv.setDragEnabled(true); 
       return true; 
      } 
     }); 

Umudum herhangi bir öğeyi uzun tıklama DSLV açmak ve bu öğe düştü ya DSLV tekrar devre dışı bırakılır, bundan sonra kaldırılacak sağlayacak olmasıdır. (Süre verilmez) (true) setDrageEnabled denir, ben bir NullPointerException aldıktan sonra

Ancak:

09-03 00:03:33.749: E/AndroidRuntime(9703): FATAL EXCEPTION: main 
09-03 00:03:33.749: E/AndroidRuntime(9703): java.lang.NullPointerException 
09-03 00:03:33.749: E/AndroidRuntime(9703):  at com.mobeta.android.dslv.DragSortController.onScroll(DragSortController.java:381) 
09-03 00:03:33.749: E/AndroidRuntime(9703):  at android.view.GestureDetector.onTouchEvent(GestureDetector.java:541) 
09-03 00:03:33.749: E/AndroidRuntime(9703):  at com.mobeta.android.dslv.DragSortController.onTouch(DragSortController.java:243) 
09-03 00:03:33.749: E/AndroidRuntime(9703):  at android.view.View.dispatchTouchEvent(View.java:3881) 
09-03 00:03:33.749: E/AndroidRuntime(9703):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:903) 
09-03 00:03:33.749: E/AndroidRuntime(9703):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942) 
09-03 00:03:33.749: E/AndroidRuntime(9703):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942) 
09-03 00:03:33.749: E/AndroidRuntime(9703):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942) 
09-03 00:03:33.749: E/AndroidRuntime(9703):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942) 
09-03 00:03:33.749: E/AndroidRuntime(9703):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942) 
09-03 00:03:33.749: E/AndroidRuntime(9703):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942) 
09-03 00:03:33.749: E/AndroidRuntime(9703):  at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1703) 
09-03 00:03:33.749: E/AndroidRuntime(9703):  at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1133) 
09-03 00:03:33.749: E/AndroidRuntime(9703):  at android.app.Activity.dispatchTouchEvent(Activity.java:2096) 
09-03 00:03:33.749: E/AndroidRuntime(9703):  at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1687) 
09-03 00:03:33.749: E/AndroidRuntime(9703):  at android.view.ViewRoot.deliverPointerEvent(ViewRoot.java:2196) 
09-03 00:03:33.749: E/AndroidRuntime(9703):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1880) 
09-03 00:03:33.749: E/AndroidRuntime(9703):  at android.os.Handler.dispatchMessage(Handler.java:99) 
09-03 00:03:33.749: E/AndroidRuntime(9703):  at android.os.Looper.loop(Looper.java:130) 
09-03 00:03:33.749: E/AndroidRuntime(9703):  at android.app.ActivityThread.main(ActivityThread.java:3729) 
09-03 00:03:33.749: E/AndroidRuntime(9703):  at java.lang.reflect.Method.invokeNative(Native Method) 
09-03 00:03:33.749: E/AndroidRuntime(9703):  at java.lang.reflect.Method.invoke(Method.java:507) 
09-03 00:03:33.749: E/AndroidRuntime(9703):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:876) 
09-03 00:03:33.749: E/AndroidRuntime(9703):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:634) 
09-03 00:03:33.749: E/AndroidRuntime(9703):  at dalvik.system.NativeStart.main(Native Method) 

kimse bu çalıştı mı? Herhangi bir fikir? Hareket olaylarından biri NULL gibi görünüyor, muhtemelen bir dokunma olayı sırasında DSLV'yi kullanıyorum.

cevap

1

Ben aynı sorunu isabet am - edildi bu geçici bir çözüm mümkün? kullanıcı sıralamak sürükleyemezsiniz bu yolla - Ben

bir çözüm başlangıçta GİTTİ için liste görünümü öğe üzerinde sürükleme işleyicisi ayarlamak oldu. Uzun basma tetiklendiğinde, sürükleme işleyicinin görünürlüğünü VISIBLE olarak ayarlayın. Ancak burada bir koştu ne zaman uzun bastıktan sonra tekrar GİTTİ sürükleyin işleyici ayarlanmış olsa bile, öğeyi seçimini olmasıdır sorun, kullanıcı yine işleyici olarak kullanılan pozisyonuna basarak sıralama sürükleyebilirsiniz.

0

Sen kullanabilirsiniz: düzen XML "DSLV drag_start_mode" ayrıntısını. Böyle :

<com.mobeta.android.dslv.DragSortListView 
    xmlns:dslv="http://schemas.android.com/apk/res/com.yourdomain.test" 
    android:id="@+id/custom_ticker_list" 
    android:layout_height="fill_parent" 
    android:layout_width="fill_parent" 
    android:dividerHeight="1dp" 
    android:childDivider="@color/line" 
    dslv:drag_start_mode="onLongPress" 
    /> 
İlgili konular