显示在一个RecyclerView在片段异步获取数据

问题描述:

我想加载数据列表异步并在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; 
} 
} 

任何类型的建议都将非常感谢。

尝试在onCreateView()而不是onCreate中设置适配器。 检查数据

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

使用这两条线onCreateView你已经获取的数据之后。

+0

我的列表在handleCheckInInfoResponse()方法中得到更新,并且我已经在那里添加了行。我编辑了该程序,请再看一遍。 – Salam