2011-09-07 36 views
0

我的问题可能与此相关的一个:touchlistview自定义页脚阻止列表大小更新

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”,“drag from”+ mFirstDragPos +“to”+ 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页脚的量),项目被删除

谁知道我的自定义页脚的区别是什么,即使后?

+0

你可以发布一个链接到一个完整的示例应用程序,演示问题?您可能会在TouchListView中遇到一些我可能能够纠正的限制。 – CommonsWare

+0

感谢您的快速回复! [链接到完整的eclipse项目](http://hooffzaken.nl/junk/baby_names。zip) –

+0

你的项目很奇怪。就好像你把你的代码放在'TouchListView'库项目中,这当然不是设置某种东西的预期方式。我无法通过Eclipse或通过命令行构建它。我会尽我所能在这个问题上做一些尝试。 – CommonsWare

回答

0

虽然我不能重现你的问题,但还有其他人。 :-)

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

我不知道为什么会发生这种情况。 TouchListView不提供提供其内容的ListAdapter。也许这是实际问题。

目前,我将不得不官方不支持有一个页脚和支持删除模式在同一时间。要么单独工作,要么组合工作。如果您尝试,我将增加TouchListView以提供运行时异常。

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

对于目前不支持此功能,我表示歉意。

+0

对不起,编辑限制,我觉得这仍然可以通过强制更新机制来解决。试试这个(你或我的页脚,无所谓): - 启动应用程序 - 通过滑动删除所有行 - >页脚处于其初始位置 - 通过按回退按钮暂停应用程序,返回主屏幕 - 从应用程序列表中选择恢复应用程序 - >页脚处于其预期位置 〜因此,在暂停恢复的某个位置,对象的一部分被丢弃并重新计算...但是,哪个执行它? –

+0

@Nino van Hooff:“我觉得这仍然可以通过强制更新机制来解决。” - 可能。欢迎您尝试并贡献一个补丁。再一次,有一天我可以解决这个问题,但是我正在从一个主要来自外国的代码库开始工作,这实际上阻碍了我弄清楚发生了什么的能力。我从AOSP收集到的代码有很多“黑客攻击”,这就是为什么我只是专注于提供一个稳定的组件,而不一定具备所有可能的功能。再次,我的道歉。 – CommonsWare

+0

我会做一些事情。谢谢你的时间。 –