touchlistview自定义页脚可防止列表大小更新

时间:2011-09-07 13:28:42

标签: android drag-and-drop commonsware-cwac

我的问题可能与此问题有关:

Add footer to Android TouchListView

在Commonware的touchlistview https://github.com/commonsguy/cwac-touchlist/blob/master/demo/src/com/commonsware/cwac/tlv/demo/TouchListViewDemo.java

的演示项目中

添加一个简单的textview作为页脚工作正常。当我添加自己的时候,它会在删除项目时崩溃。最初有4个项目,在删除4个项目中的任何一个后,页脚停留在第5位。

这就是我添加页脚的方式:

View footerView = ((LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.footer_cloud, null, false);

这是xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="64dip"
    android:gravity="center_vertical"
    >
    <ImageView android:id="@+id/add_icon"
        android:layout_centerInParent="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
                android:src="@drawable/ic_menu_add"
    />

    <ImageView android:id="@+id/cloudBG"
        android:layout_centerInParent="true"
        android:layout_width="230dp"
        android:layout_height="60dp"
        android:background="@drawable/cl"

    />


</RelativeLayout>

将调试添加到onRemove:

Log.d("tlv","count b4 remove "+adapter.getCount()+" aray: "+array.size());
            adapter.remove(adapter.getItem(which));

            //adapter.notifyDataSetChanged();
            Log.d("tlv","count after remove "+adapter.getCount()+" aray: "+array.size());

显示适配器和阵列大小已更新

我在touchlistview.java中更改了一些代码,以便在最低项目下拖动项目时修复崩溃:

Log.d(“tlv”,“拖动”+“mFirstDragPos +”到“+ mDragPos +”cnt“+ getCount());

                                                if(mDragPos < getCount()-this.getFooterViewsCount()){// Nino van Hooff: fix out of bounds
                                                    mDropListener.drop(mFirstDragPos, mDragPos);
                                                }else{
                                                    mDropListener.drop(mFirstDragPos, mDragPos-1);
                                                }
                                        }
                                        unExpandViews(false);

getCount函数始终返回相同的数字(项目数量+页脚数为1),即使在删除项目后也是如此

谁知道我的自定义页脚有什么不同?

1 个答案:

答案 0 :(得分:0)

虽然我无法重现你的问题,但还有其他问题。 : - )

即使在基线代码中,如果从应用页脚的TouchListView中删除一行,也会得到奇怪的视觉效果。从层次结构视图的角度来看,似乎发生的情况是,对于每个删除的行,页脚都是重复的 - 删除四行,获得四个页脚。

我不知道为什么会这样。 TouchListView忽略了提供其内容的ListAdapter。也许这就是实际问题。

目前,我将不得不正式支持同时使用页脚和支持删除模式。要么单独工作,要么不能组合。如果你尝试,我会扩充TouchListView以给出运行时异常。

最终,TouchListView确实需要替换。作为我对触摸事件的深入探索的一部分,我可能会在2012年取而代之。也许其他人会想出他们的。由于大部分代码都是从AOSP的音乐应用程序中提取的,因此我修复的能力有限。

我很抱歉目前不支持此功能。