2017-08-29 187 views
1

我想加載數據列表異步並在RecyclerView中顯示它的片段。但是,相同的實現適用於Activity類但對於Fragment失敗:顯示在一個RecyclerView在片段異步獲取數據

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; 
} 
} 

任何類型的建議都將非常感謝。

回答

0

嘗試在onCreateView()而不是onCreate中設置適配器。 檢查數據

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

使用這兩條線onCreateView你已經獲取的數據之後。

+0

我的列表在handleCheckInInfoResponse()方法中得到更新,並且我已經在那裏添加了行。我編輯了該程序,請再看一遍。 – Salam

相關問題