首页 > 解决方案 > 在 onclick 侦听器中为 recyclerview 创建适配器是否很糟糕?

问题描述

我有一个片段,其中包含:

现在我的问题是,如果每次单击项目时我不断为 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();
                            }
                        }

每次单击按钮时都调用它bad,是否有另一种方法可以在自定义对话框中显示 recyclerview 或者这是一种正确的方法?

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但不确定这是否是原因?

标签: javaandroidandroid-alertdialogandroid-recyclerview

解决方案


推荐阅读