2016-10-20 11 views
1

私はさまざまな断片を示すアクティビティを持っています。フラグメントのレイアウトは、通常、listViewです。 listViewでアイテムをクリックすると、次のフラグメントが表示されます。フラグメントにはSwipeRefreshLayoutがあります。Android:空のリストビューは、ボタンが押された後に表示されます

ボタンバックを押すとlistViewが空になることがあるという問題があります。 デバッグでは、データはまだどこにあるのかわかりますが、listViewは常にそれを再描画しません。 listViewが空の場合、listViewのリフレッシュもうまくいきません。データはリロードされますが、表示されません。

私はアダプタを持っており、私はnotifyDataSetChangedを呼び出します。また、リストをリセットしてからadapter.notifyDataSetChangedを呼び出そうとしましたが、うまくいきません。断片の

のonCreate():

public void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 
    // creates the adapter for the different fragments 
    adapter = createListViewAdapter(); 
    setListAdapter(adapter); 
    } 

onViewCreated()断片:アダプタ

public void onViewCreated(View view, Bundle savedInstanceState){ 
     // reload data when it is not present 
     this.values = values; 
     this.filteredValues = values; 
     adapter.notifyDataSetChanged(); 
     this.setOnRefreshListener(() -> { 
     // reload data 
     this.values = values; 
     this.filteredValues = values; 
     adapter.notifyDataSetChanged(); 
    )}; 
     super.onViewCreate(view, savedInstanceState); 
    } 

public abstract class BaseListViewAdapter extends BaseAdapter implements Filterable{ 

     @Override 
     public int getCount(){ 
     return filteredValues.size(); 
     } 

     @Override 
     public T getItme(int position){ 
     return filteredValues.get(positon); 
     } 

     @Override 
     public long getItemI(int position){ 
     return 0; 
     } 

     @Override 
     public Filter getFilter(){ 
     return BaseListViewFragment.this.getFilter(); 
     } 
    } 

getView()getViewTypeCount()及びgetItemViewTypeのに実装されています異なる断片。

問題は定期的に発生するのではなく、問題は何ですか?

+0

この問題を解決するには、SwipeRefreshLayoutを削除してください。 –

答えて

0

があり

@Override 
protected void setUserVisibleHint(boolean isUserVisible){ 
} 

ちょうどそのメソッドをオーバーライドし、チェックと呼ばれる方法である断片がユーザに表示され、()notifyDatasetChanged等neccaryアクションを行うことです。

ヌルチェックが重要です。

ありがとうございました

+0

setUserVisibleHintを変更しても何も変更されませんでした。 ListViewはまだ空の場合があります。 –

+0

フラグメント内のフラグメント? – Godwin

+0

いいえ、1つのフラグメントで1つのactitivtyを持っています。アイテムをクリックするとフラグメントを変更します。破片は積み重なっているので、私は戻って行くことができます。 –

関連する問題