2011-09-07 39 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

我會做一些事情。謝謝你的時間。 –