Ich habe eine Heimat Aktivität und 3 Kind-Fragmente, in Tätigkeit zu Hause i eine api aufgerufen bin ich dann das Ergebnis an die Recycler Ansicht aktualisieren mag, die in Fragmente enthalten. jetzt funktioniert alles außer notifydatasetchanged() perfekt.RecyclerView notifydatasetchanged nicht von Fragmente aufgerufen
haben Sie eine Idee über Fragmente mir bitte helfen.
HomeActivity.java
// member variable for the first fragment
private FeedsFragment feedsFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
// initialised in oncreate
feedsFragment = new FeedsFragment();
}
private void setupViewPager(ViewPager viewPager) {
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
adapter.addFragment(feedsFragment, "FEEDS");
}
// this is what i am called when get the api result
feedsFragment.setUpdateArrayList(updateArrayList);
FeedsFragment.java
public class FeedsFragment extends Fragment {
private RecyclerView recyclerView;
private UpdateListAdapter uAdapter;
private ArrayList<Updates> updateArrayList;
private String TAG = UpdatesActivity.class.getSimpleName();
public FeedsFragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
updateArrayList = new ArrayList<Updates>();
View thisView = inflater.inflate(R.layout.activity_updates, container, false);
recyclerView = (RecyclerView) thisView.findViewById(R.id.recycler_view_updates);
uAdapter = new UpdateListAdapter(getActivity(), updateArrayList, new UpdateListAdapter.UpdatesActionListener() {
@Override
public void onShareButtonTapped(int position) {
}
@Override
public void onOptionsButtonTapped(int position, View v) {
}
@Override
public void onProfileButtonTapped(int position) {
}
});
LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
recyclerView.setLayoutManager(layoutManager);
recyclerView.setItemAnimator(new DefaultItemAnimator());
recyclerView.setAdapter(uAdapter);
return thisView;
}
public void setUpdateArrayList(ArrayList<Updates> array){
this.updateArrayList = array;
this.recyclerView.getAdapter().notifyDataSetChanged();
//Also tried
// uAdapter.notifyDataSetChanged();
}
}
Sind Sie sicher, dass an den Adapter die Daten ** hinzugefügt tatsächlich wird ** vor 'notifyDataSetChanged()' aufrufen? – OBX
getestete App mit Debugger mit Breakpoints, Array hat 14 Objekte –
Sie rufen 'setUpdateArrayList()' aus der Aktivität, versuchen Sie es in das Fragment aufrufen. zB von 'onCreateView()'. und lemme wissen, – OBX