java - 在 onclick 侦听器中为 recyclerview 创建适配器是否很糟糕?
问题描述
我有一个片段,其中包含:
- 一个 RecyclerView。
- 带有 ItemSelected 侦听器的 NavigationView。
- 以 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
但不确定这是否是原因?
解决方案
推荐阅读
- ios - typealias 泛型函数变量
- powerbi - Power BI DAX 从自定义日期获取上个月的值
- laravel - laravel post 方法不工作。虽然 GET 方法工作
- javascript - 如何使用钩子在组件状态下复制 Redux 存储?
- javascript - 如何将 Vue 变量设置为等于函数参数?
- javascript - 在 JavaScript 中使用 forEach() 函数调用 $el 时出现问题
- php - php日期比较问题,我尝试了很多日期,但它根本不起作用
- pine-script - 交易视图 / Pine 脚本平均高点和低点
- c - 如何将 sigaction 与 4 个子进程一起使用?
- docker - Docker Desktop 未启动 - 序列不包含匹配元素