Пользовательский нижний колонтитул touchlistview предотвращает обновление размера списка - PullRequest
0 голосов
/ 07 сентября 2011

Моя проблема может быть связана с этим:

Добавление нижнего колонтитула в Android TouchListView

В демонстрационном проекте touchlistview от Commonware https://github.com/commonsguy/cwac-touchlist/blob/master/demo/src/com/commonsware/cwac/tlv/demo/TouchListViewDemo.java

Простой текстовый вид добавляется как нижний колонтитул, который работает нормально. Когда я добавляю свою собственную, она разрушается при удалении элементов. Изначально с 4 пунктами нижний колонтитул остается в позиции 5 после удаления любого из 4 элементов.

Вот как я добавляю нижний колонтитул:

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 голосов
/ 08 сентября 2011

Хотя я не могу воспроизвести ваши проблемы, есть и другие.: -)

Даже в базовом коде, если вы удалите строку из TouchListView, к которой вы применили нижний колонтитул, вы получите странные визуальные результаты.С точки зрения иерархии, кажется, что для каждой удаленной строки нижний колонтитул дублируется - удалите четыре строки, получите четыре нижних колонтитула.

Я понятия не имею, почему это происходит.TouchListView не замечает ListAdapter, который предоставляет его содержимое.Возможно, это актуальная проблема.

В настоящее время мне придется официально не поддерживать наличие нижнего колонтитула и поддержку режимов удаления одновременно.Либо работает индивидуально, но не в комбинации.Я увеличу TouchListView, чтобы выдать исключение времени выполнения, если вы попробуете.

В конце концов, TouchListView действительно нуждается в замене.Я мог бы заменить его в 2012 году как часть моего более глубокого исследования сенсорных событий.Возможно, кто-то еще придумает их.Поскольку большая часть этого кода только что была извлечена из приложения Music в AOSP, у меня ограниченные возможности по ремонту.

Приношу свои извинения за то, что в настоящее время не поддерживаю эту функцию.

...