2017-02-09 11 views
0

私のアプリケーションでは、それぞれRecyclerViewの5つのフラグメントを含むViewPagerがあります。ボタンをクリックした後、RecyclerViewのアイテムをリフレッシュする必要がありますので、サーバーにリクエストを送信し、自分のアクティビティでレスポンスを取得しました。私はのすべてに対してnotifyDataSetChanged();を呼び出していますが、私のViewPagerのページ。なにが問題ですか?フラグメント内のRecyclerViewは更新されません

public class ReservedFragment extends Fragment { 
List<ReservedTimesModel> arrayList; 
ReservedTimesAdapter reservedTimesAdapter; 
RecyclerView recyclerView; 

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.fragment_reserved, container, false); 
    recyclerView = (RecyclerView) view.findViewById(R.id.fragment_recycle); 
    recyclerView.setLayoutManager(new LinearLayoutManager(getContext())); 
    if (arrayList != null) { 
     if (!arrayList.isEmpty()) { 
      reservedTimesAdapter = new ReservedTimesAdapter(arrayList, getActivity()); 
      recyclerView.setAdapter(reservedTimesAdapter); 
     } else { 
      view.findViewById(R.id.textview).setVisibility(View.VISIBLE); 
     } 
    } else { 
     view.findViewById(R.id.textview).setVisibility(View.VISIBLE); 
    } 
    return view; 
} 

public void refresh() { 
    if (reservedTimesAdapter != null) { 
     if (arrayList.isEmpty()) { 
      getView().findViewById(R.id.textview).setVisibility(View.VISIBLE); 
     } else { 
      reservedTimesAdapter.notifyDataSetChanged(); 
     } 
    } 
} 

コードアダプタでButtonクリックリスナーの内部:

context.getReserved(); 

コードフラグメントごとに新しいリストを設定した後、アクティビティリフレッシュに:ここで私のアプリケーションからいくつかのコード

フラグメントがある

viewPager.setVisibility(View.VISIBLE); 
reservedFrag.refresh(); 
deprecatedFrag.refresh(); 
cancelledFrag.refresh(); 
cancelledByAdminFrag.refresh(); 
pendingFrag.refresh(); 
viewPager.setCurrentItem(4); 
+0

あなたのアダプタは 'arrayList'が空の場合にのみ通知を受けるようです – magicleon

答えて

1

notifyDataSetChangedはconditi変数の値に基づいています。たぶんそれは全く呼び出されていないかもしれません。

コードが非常に小さいので、確かに言うのは難しいです。

+0

私はこれを約5時間苦労していました。ありがとう –

関連する問題