Плохо ли создавать адаптер для переработчика в слушателе onclick? - PullRequest
0 голосов
/ 17 января 2019

У меня есть фрагмент, который содержит:

  • RecyclerView.
  • NavigationView с прослушивателем ItemSelected.
  • Пользовательское диалоговое окно с видом переработчика в виде макета.

Теперь у меня вопрос, будет ли плохо, если я постоянно создаю новый RecyclerView Адаптер для RecyclerView при каждом нажатии на элемент?

Это мой код внутри моего фрагмента:

mNavigationView1.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {
            switch (item.getItemId()){
                case R.id.ic_add:
                    final Dialog dialog;
                    dialog = new Dialog(getActivity());
                    dialog.setContentView(R.layout.all_playlists_dialog);
                    dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
                    dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
                    RecyclerView recyclerView = dialog.findViewById(R.id.recyclerViewDialog);
                    Main.playLists = Main.songs.playList;
                    PlayListAdapter playListAdapter = new PlayListAdapter(getActivity(),Main.playLists);
                    final LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity());
                    recyclerView.setLayoutManager(linearLayoutManager);
                    recyclerView.setHasFixedSize(true);
                    recyclerView.setAdapter(playListAdapter);
                    recyclerView.addOnItemTouchListener(new OnItemClickListeners(getActivity(), recyclerView, new OnItemClickListeners.OnItemClickListener() {
                        @Override
                        public void onItemClick(View view, int position) {
                            try {
                                Main.songs.addToPlayList(getActivity(), Main.musicList.get(currentIndex).getId(), Main.playLists.get(position).getID());
                                Toast.makeText(getActivity(), "Song added!", Toast.LENGTH_SHORT).show();
                                Log.i(TAG, "SONG ID: " + Main.musicList.get(currentIndex).getId() + "PLAYLIST ID: " + Main.playLists.get(position));
                            } catch (Exception e) {
                                e.printStackTrace();
                            }
                        }

Вызывает ли это каждый раз, когда нажимается кнопка плохо , есть ли другой способ отобразить обзор переработчика внутри пользовательского диалога или это правильный способ сделать это?

PlayListAdapter playListAdapter = new PlayListAdapter(getActivity(),Main.playLists);
final LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity());
recyclerView.setLayoutManager(linearLayoutManager);
recyclerView.setHasFixedSize(true);
recyclerView.setAdapter(playListAdapter);

Иногда я получаю сообщение об ошибке в logcat, которое говорит RecyclerView Skipping Layout, но не уверен, что это причина?

...