2017-08-29 20 views
1
abgerufen werden

Ich versuche, die Datenliste asynchron zu laden und in RecyclerView in Fragmenten anzuzeigen. Die gleiche Implementierung funktioniert jedoch für die Aktivitätsklasse, schlägt aber fehl für das Fragment:Anzeigen von Daten, die asynchron in einer RecyclerView in Fragment

public class ItemThreeFragment extends Fragment { 

String email; 
private CompositeSubscription mSubscriptions; 
HistoryAdapter historyAdapter; 
RecyclerView recyclerView; 


public static ItemThreeFragment newInstance() { 
    ItemThreeFragment fragment = new ItemThreeFragment(); 
    return fragment; 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    email = ((BaseApplication) getActivity().getApplication()).getEmail(); 
    mSubscriptions = new CompositeSubscription(); 
    getUserHistory(email); 

} 

private void getUserHistory(String email) { 
    mSubscriptions.add(NetworkUtil.generic().getUserCheckinInfo(email) 
      .observeOn(AndroidSchedulers.mainThread()) 
      .subscribeOn(Schedulers.io()) 
      .subscribe(this::handleCheckInInfoResponse,this::handleError)); 

} 

private void handleCheckInInfoResponse(List<Checkin> checkins) { 
    System.out.println(checkins); 
    historyAdapter = new HistoryAdapter(this.getActivity(), checkins); 
    recyclerView.setAdapter(historyAdapter); 
    recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); 

} 

private void handleError(Throwable throwable) { 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.fragment_item_three, container, false); 
    recyclerView = (RecyclerView) rootView.findViewById(R.id.historyList); 


    return rootView; 
} 
} 

Jede Art von Vorschlägen wird sehr geschätzt.

Antwort

0

versuchen Sie, den Adapter in onCreateView() statt OnCreate festzulegen. prüfen Daten

recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); 
recyclerView.setAdapter(historyAdapter); 

Verwenden Sie diese beiden Linien onCreateView nachdem Sie die Daten geholt haben.

+0

Meine Liste wird in der Methode handleCheckInInfoResponse() aktualisiert und ich habe bereits die Zeilen dort drüben hinzugefügt. Ich habe das Programm bearbeitet, bitte schau es dir nochmal an. – Salam

Verwandte Themen