0

わかりやすくするために、この質問を書き直しました。

ListView と、フッター内に更新ボタンがある FooterView があります。

それらすべてへの参照をアクティビティレベルで保持します

  ListView myListView;
  View     footerView;
  Button   refreshBtn;

 onCreate(Bundle)
 {
          footerView = inflate footer view etc;
          refreshBtn = footerView.findViewById(R.id.refresh_btn);
          refreshBtn.setOnClickListener(this);
          myListView.addFooter(footerView);
 }

  onClick()
 {
     // refresh clicked.  Don't show FooterView anymore unless its needed again
      myListView.removeView(footerView)  //

 }

 onRefresthResult()
 {
    // looks like we need to try refresh again.  So lets add the refresh footer back in.
    // THIS DOES NOT WORK. CLICKING refreshBtn does NOTHING.
     myListView.addFooter(footerView);
     resetListAdapter();


     // Now refresh button does NOTHING. unless we do THIS below instead.

     // THIS DOES WORK, BUT WHY?
     footerView = inflate footer view.   (Why does this need to be done again. footerView was not null both it and the refreshBtn seemed to have valid values).
     refreshBtn = footerView.findViewById(R.id.refresh_btn);
     refreshBtn.setOnClickListener(this);

     // Note footerView reference was always valid and resetting onClick 
        without reinflating did not work.

 }

私の唯一の理論は、ビューを削除すると何らかの方法でマークが付けられるため、フッタービューの新しいインスタンスを再度追加する必要があるということですか?

4

1 に答える 1

1

onclick関数でフッターを非表示にすることができます

footerView.setVisibility(View.INVISIBLE);
于 2013-10-25T17:05:38.240 に答える