2

私は自動拡張リストビューに取り組んでいます。私が電話する前に毎回

    mAdapter.notifyDataSetChanged();

リストの最新のアイテムをプログレス サークルで切り替えます。

    /**
    * displays a progress banner instead of the last item.
    * @param reload boolean
    */
    protected void showReloadView(boolean reload){
         View item = mListView.getChildAt(onLastItem);
         //View item = mListView.getAdapter().getView(onLastItem, null, null);
         content = item.findViewById(id.itemContent);
         loading = item.findViewById(id.itemLoading);
         if(reload){
           content.setVisibility(View.GONE);
           loading.setVisibility(View.VISIBLE);
        }else{
           content.setVisibility(View.VISIBLE);
           loading.setVisibility(View.GONE);
   }

ここでの私の問題は、SDK で EfficientAdapter として言及されているように、ビューをリサイクルしていることです。したがって、私の ListView オブジェクトは現在 8 個以下の項目しか保持していません (これ以上表示されないため)

"onLastItem" は 7 (可視アイテム - 1) であるため、最初の実行は問題ありませんが、2 回目の実行は

    ListView.getChildCount() 

6 項目だけを返します。では、なぜ ListView が小さくなっているのですか? Visibility.GONEのせい?私は間違ったことをしていますか?

コメントなしの行も使用しようとしました。私のアダプターはリストの実際のサイズを知っており、ビューを取得することもできます。ただし、これらのビューの可視性を設定しても効果はありません。

事前にThx

4

2 に答える 2

0

では、なぜ ListView が小さくなっているのですか? Visibility.GONEのせい?

それは私の推測ですが、ListView確実に知るにはの実装を見る必要があります。

FWIW、私は逆のアプローチを取りましたEndlessAdapter-私はそのままにしてListView、より多くのデータのフェッチを処理する装飾アダプターを使用します。

于 2010-03-19T20:39:29.003 に答える
0

Google IO 09 ビデオを見た後、問題を解決しました。

リストビューには表示可能なビューしか含まれていないため、コードを次のように変更しました。

View item = mListView.getChildAt(mListView.getChildCount()-1);

ビューをフィールドに保存し、データセットを更新した後、レイアウトを元に戻すことができます。それをテストし、完璧に動作します。

お時間をいただきありがとうございます。

于 2010-03-19T21:00:09.250 に答える