ViewModel, фрагмент, liveData, дооснащение - PullRequest
0 голосов
/ 01 декабря 2018

У меня проблема с отображением данных в fragrecycler. Я использую модификацию, чтобы получить 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;
}

, поэтому я надеюсь получить помощь:)

1 Ответ

0 голосов
/ 24 декабря 2018

Прежде всего, не используйте никакие представления в 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)
}
...