【问题标题】:ViewModel , Fragment , liveData , RetrofitViewModel , 片段 , liveData , 改造
【发布时间】:2019-05-03 01:39:36
【问题描述】:

我在 fragmentRecycler 中显示数据时遇到问题 我正在使用改造来获取 json 使用 viewModel 和 liveData 从活动配置中观察和生存 但我不知道如何将这些响应显示为项目 在我的 Fragment recyclerView 这是我的片段 onCreate 方法代码:-

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    voucherViewModel model = ViewModelProviders.of(getActivity()).get(voucherViewModel.class);
    model.getVoucher().observe(getActivity(), new Observer<List<Voucher>>() {
        @Override
        public void onChanged(@Nullable List<Voucher> vouchers) {
            Log.e("on change", "onChanged: " );
            adapter = new homeRecycleViewAdapter(getContext(),vouchers );
            recyclerView.setLayoutManager(new LinearLayoutManager(context));
            recyclerView.setAdapter(adapter);
        }

    });

}//end onCreate

我的 OnCreateView 方法代码:-

public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.home_fragment_layout, container, false);
    adapter = new homeRecycleViewAdapter(context);
    recyclerView = view.findViewById(R.id.homeRecyclerViewID);

    recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
    recyclerView.setAdapter(adapter);
    //return inflated view
    return view;
}

所以我希望得到帮助:)

【问题讨论】:

    标签: android android-fragments retrofit viewmodel android-livedata


    【解决方案1】:

    首先不要在片段的 onCreate() 中使用任何视图。这里没有创建视图,所以你可能会得到错误。

    其次, 让 onCreteView 只返回你正在膨胀的视图。

    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.home_fragment_layout, container, false)
        return view;
    }
    

    充气完成后,您会在 onViewCreated 上获得回调。在这里,您可以访问所有视图,例如您的回收站视图。在这里它们会被充气。

    @Override
    void onViewCreated(View view, Bundle savedInstanceState) {
        homeRecycleViewAdapter adapter = new homeRecycleViewAdapter(context, vouchers);
        recyclerView = view.findViewById(R.id.homeRecyclerViewID);
        recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
        recyclerView.setAdapter(adapter);
        super.onViewCreated(view, savedInstanceState)
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-23
      • 2019-01-17
      • 1970-01-01
      • 1970-01-01
      • 2021-08-23
      • 1970-01-01
      • 2019-07-17
      • 2021-07-16
      相关资源
      最近更新 更多