Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android touchlistview自定义页脚阻止列表大小更新_Android_Drag And Drop_Commonsware Cwac - Fatal编程技术网

Android touchlistview自定义页脚阻止列表大小更新

Android touchlistview自定义页脚阻止列表大小更新,android,drag-and-drop,commonsware-cwac,Android,Drag And Drop,Commonsware Cwac,我的问题可能与此有关: 在Commonware的touchlistview演示项目中 添加了一个简单的文本视图作为页脚,可以正常工作。当我添加我自己的项目时,它会在删除项目时发生故障。对于最初的4项,在删除4项中的任何一项后,页脚将保持在位置5 以下是我添加页脚的方式: View footerView = ((LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.footer_clo

我的问题可能与此有关:

在Commonware的touchlistview演示项目中

添加了一个简单的文本视图作为页脚,可以正常工作。当我添加我自己的项目时,它会在删除项目时发生故障。对于最初的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>
显示适配器和阵列大小已更新

我更改了touchlistview.java中的一些代码,以修复在将项目拖到最低项目下方时出现的崩溃:

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

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


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

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

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

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

就目前而言,我将不得不正式不支持有一个页脚,同时支持删除模式。两者都可以单独工作,但不能组合使用。如果您尝试,我将扩充
TouchListView
以给出运行时异常

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


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

您能否发布一个指向演示问题的完整示例应用程序的链接?您可能在
TouchListView
中遇到了一些限制,我可以纠正这些限制。感谢您的快速回复!你的项目很奇怪。这就好像您将代码放在
TouchListView
库项目中一样,这肯定不是设置某些内容的预期方式。我无法在Eclipse中或通过命令行构建它。我会尽我最大的努力在这个问题上做一些实验。对不起,再次编辑限制:我觉得这仍然可以通过强制一些更新机制来解决。尝试此操作(您或我的页脚,无所谓):-启动应用程序-通过滑动删除所有行-->页脚位于其初始位置-通过按“上一步”按钮暂停应用程序,返回主屏幕-通过从应用程序列表中选择它来恢复应用程序-->页脚位于其预期位置~因此,在暂停恢复中的某个位置,对象的一部分将被丢弃并重新计算。。。尼诺·范霍夫:“我觉得这仍然可以通过强制一些更新机制来解决。”——可能。欢迎您尝试并提供补丁。再说一次,总有一天我可以解决这个问题,但事实上,我在一个很大程度上依赖于外来代码的基础上工作,这真的妨碍了我了解到底发生了什么。我从AOSP中截取的代码中写满了“大规模黑客”,这就是为什么我只专注于提供一个稳定的组件,而不一定包含所有可能的功能。再次表示歉意,我会做出一些让步。谢谢你抽出时间。
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());
                                                if(mDragPos < getCount()-this.getFooterViewsCount()){// Nino van Hooff: fix out of bounds
                                                    mDropListener.drop(mFirstDragPos, mDragPos);
                                                }else{
                                                    mDropListener.drop(mFirstDragPos, mDragPos-1);
                                                }
                                        }
                                        unExpandViews(false);