1

Ich habe meine Fragmentklasse so.Adapter aktualisiert und ändert die Recycleransicht nicht, notifyDataSetChanged funktioniert nicht

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 

    View rootView = inflater.inflate(R.layout.fragment_facebookfeeds,container,false); 
    mLayoutManager = new LinearLayoutManager(getActivity()); 


    mRecyclerView = (RecyclerView) rootView.findViewById(R.id.my_recycler_view_facebook); 
    mRecyclerView.setHasFixedSize(true); 


    GetTimeline(TimelineUrl, next, new ServerCallback() { 
     @Override 
     public void onSuccess(Facebook result) { 
      next = result.getNext(); 
      List<Facebook> newList = new ArrayList<>(); 
      newList.add(result); 
      facebookList.clear(); 
      facebookList.addAll(newList); 
      mAdapter = new FacebookAdapter(facebookList,getActivity()); 
      mRecyclerView.setLayoutManager(mLayoutManager); 
      mRecyclerView.setItemAnimator(new DefaultItemAnimator()); 
      mRecyclerView.setAdapter(mAdapter); 
      //mAdapter.notifyDataSetChanged(); 

     } 
    }); 




    mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { 

     @Override 
     public void onScrolled(RecyclerView recyclerView, int dx, int dy) { 
      super.onScrolled(recyclerView, dx, dy); 

      visibleItemCount = mRecyclerView.getChildCount(); 
      totalItemCount = mLayoutManager.getItemCount(); 
      firstVisibleItem = mLayoutManager.findFirstVisibleItemPosition(); 

      if (loading) { 
       if (totalItemCount > previousTotal) { 
        loading = false; 
        previousTotal = totalItemCount; 
       } 
      } 
      if (!loading && (totalItemCount - visibleItemCount) 
        <= (firstVisibleItem + visibleThreshold)) { 
       GetTimeline(TimelineUrl, next, new ServerCallback() { 
        @Override 
        public void onSuccess(Facebook result) { 
         next = result.getNext(); 
         List<Facebook> newFacebook = new ArrayList<Facebook>(); 
         newFacebook.add(result); 
         facebookList.clear(); 
         facebookList.addAll(newFacebook); 
         mAdapter.notifyDataSetChanged(); 
         System.out.println("New Adapter Item Count "+mAdapter.getItemCount()); 
        } 
       }); 
       loading = true; 
      } 
     } 
    }); 

    // Inflate the layout for this fragment 
    return rootView; 
} 

Und mein Adapter ist so etwas.

Nicht wirklich sicher, was das Problem ist, ich habe viele Antworten gelesen viele Dinge versucht, aber nichts scheint zu helfen.
GetTimeline ist eine Methode mit Volley, die ich verwende, um Anrufe zu tätigen.

Antwort

1

Okay, das habe ich behoben. Ich habe einfach die im Constructor des Adapters geschriebene Logik in die Fragment-Klasse verschoben und die Daten an den Adapter übergeben. Schließlich hat die adapter.notifyDataSetChanged() funktioniert!