Android 带StickyListHeader的SwipeActionAdapter

Android 带StickyListHeader的SwipeActionAdapter,android,adapter,swipe,Android,Adapter,Swipe,我正在尝试将这两个很棒的Android库结合起来: 我与SwipeActionAdapter的所有者一起工作过,他说这是可能的(),但我仍然收到错误: 08-02 11:33:07.364 1655-1655/com.slaptap.tappedin E/InputEventReceiver﹕ Exception dispatching input event. 08-02 11:33:07.364 1655-1655/com.slaptap.tappedin E/Message

我正在尝试将这两个很棒的Android库结合起来:

我与SwipeActionAdapter的所有者一起工作过,他说这是可能的(),但我仍然收到错误:

08-02 11:33:07.364    1655-1655/com.slaptap.tappedin E/InputEventReceiver﹕ Exception dispatching input event.
08-02 11:33:07.364    1655-1655/com.slaptap.tappedin E/MessageQueue-JNI﹕ Exception in MessageQueue callback: handleReceiveCallback
08-02 11:33:07.380    1655-1655/com.slaptap.tappedin E/MessageQueue-JNI﹕ java.lang.NullPointerException
            at com.wdullaer.swipeactionadapter.SwipeActionTouchListener.onTouch(SwipeActionTouchListener.java:419)
            at android.view.View.dispatchTouchEvent(View.java:7701)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2210)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1945)
我的基本适配器由滑动适配器包装。然后我有了另一个适配器(ListStickyAdapter),它扩展了Decorator适配器并实现了StickyAdapter

 mAdapter = new ListAdapter(getActivity(), data);
 swipeAdapter = new SwipeActionAdapter(mAdapter);
 ListStickyAdapter vbsa = new ListStickyAdapter(swipeAdapter);
 listView.setAdapter(vbsa);

 // is it because of this line? (having to pass the sticky header child list)
 swipeAdapter.setListView(listView.getWrappedList())

我做错了什么?

你的猜测似乎是正确的,可能是那句话:

swipeAdapter.setListView(listView.getWrappedList())
您在SwipeActionTouchListener的第419行有一个错误,因为找不到(向下)视图组:

L419 mDownViewGroup.showBackground...
mDownViewGroup是在操作停止时初始化的子视图:

 ...
 child = mListView.getChildAt(i);
 child.getHitRect(rect);
 if (rect.contains(x, y)) {
     try {
         mDownViewGroup = (SwipeViewGroup) child;
         ...

我不知道您提供的listview.getWrappedList()背后的结构,但我猜swipeaction不喜欢它。如果它不喜欢,可能是因为包装删除了子结构(int childCount=mListView.getChildCount();看起来StickyListHeaders使用了与SwipeActionAdapter非常相似的方法,它包装了底层视图,并可能覆盖了一些TouchListener来完成它的工作


Gomoku7是正确的,因为您需要创建一个StickyListHeaders分支以使其工作。根据库的工作方式,它们的包装器必须是最后一个,因此它需要知道下面的SwipeViewGroup(通过从该类扩展),就像它需要知道底层视图可以实现可检查一样。

嘿,谢谢你的想法。问题是刷卡适配器只接受常规的“列表视图”,而“粘性标题列表视图”它是自己的对象..在仍然使用它的情况下,有没有其他选择的想法?Hi@Gomoku7-WrapperView.java是你唯一需要修改的文件吗?我已经让WrapperView扩展了SwipeViewGroup,现在它在整个项目中抛出了更多错误。你能提供你的fork吗?是的,我在这个位置添加了我的工作示例:嘿Gomoku7,所以我可以运行该项目,但是在您的示例中,标题没有保持粘性。您是否看到它们在滚动上保持不变?哦,我没有注意到该错误。抱歉。我看了一下,只需在swipeactionadapter中禁用setOnScrollListener。它由粘性列表管理,因此没有任何用处,滑动不需要listviewscrolling。我升级了ted并在我的示例项目中做了一些小的修改(我想知道我是否可以混合适配器)。嘿,谢谢你的想法。因此,我在我的项目中引入了本地库。我只是不确定在扩展SwipeViewGroup后需要更改哪些点
java.lang.ClassCastException: se.emilsjolander.stickylistheaders.WrapperView cannot be cast to com.wdullaer.swipeactionadapter.SwipeViewGroup