Recyclerview фрагмента onCreateView, onViewCreated или onActivityCreated?
Должен ли я инициализировать свой просмотрщик в onCreateView, onViewCreated или onActivityCreated?
В чем разница между этими 3, я искал объяснения, но некоторые люди говорят, что использовать onCreateView, а некоторые говорят, что использовать onViewCreated или onActivityCreated И только использовать onCreateView для раздувания макета?
Это мой код
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View rootView = inflater.inflate(R.layout.fragment_tab1, container, false);
recyclerViewSongs = rootView.findViewById(R.id.recyclerViewSongs);
initRecyclerView();
Log.e(TAG, "onCreateView called!");
return rootView;
}
private void initRecyclerView() {
Main.musicList = Main.songs.songs;
// Connects the song list to an adapter
// (Creates several Layouts from the song list)
allSongsAdapter = new AllSongsAdapter(getContext(), Main.musicList);
final LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity());
recyclerViewSongs.setLayoutManager(linearLayoutManager);
recyclerViewSongs.setHasFixedSize(true);
recyclerViewSongs.setAdapter(allSongsAdapter);
recyclerViewSongs.addOnItemTouchListener(new OnItemClickListeners(getContext(), new OnItemClickListeners.OnItemClickListener() {
@TargetApi(Build.VERSION_CODES.O)
@Override
public void onItemClick(View view, int position) {
Toast.makeText(getContext(), "You Clicked position: " + position, Toast.LENGTH_SHORT).show();
if (! Main.songs.isInitialized())
return;
//Start playing the selected song.
playAudio(position);
}
}));
}
2 ответа
onCreateView()
будет лучшим выбором, так как вы используете Fragment
, Разница в том, onCreateView()
это Fragment
эквивалент onCreate()
для деятельности и работает в течение View
создание но onViewCreated()
бежит за View
был создан.
А также onActivityCreated()
звонки после onCreate()
метод Activity
завершает, как вы можете увидеть здесь: /questions/30950303/razlichiya-i-ispolzovanie-oncreate-oncreateview-i-onactivitycreated-vo-fragmentah/30950308#30950308
Наилучший уровень для установки RecyclerView - это onCreateView(), который эквивалентен onCreate() в случае Activity, потому что RecyclerView должен быть быстрым, чтобы не замедлять работу пользовательского интерфейса. Следовательно, RecyclerView в onViewCreated() замедлит работу пользовательского интерфейса перед его заполнением.