一旦单击它或在android中重置项目颜色,如何捕捉箭头事件?

马克·德尔斐

我有以下问题。我只在MainActivity中为我的应用程序使用ListView。为了能够执行多个项目选择,我为ListView实现了以下逻辑:

listview.setMultiChoiceModeListener(new AbsListView.MultiChoiceModeListener() {
            @Override
            public void onItemCheckedStateChanged(ActionMode actionMode, int i, long l, boolean b) {
                Cursor cursor = item_repository.getItemList();
                if (listview.getCheckedItemCount() > 0)
                    actionMode.setSubtitle(listview.getCheckedItemCount() + " item(s) selected");
                cursor.moveToPosition(i);
                if (b) {
                    item_ids.add(cursor.getString(0));
                    listview.getChildAt(i).setBackgroundColor(getResources().getColor(R.color.selected_item_color));
                } else {
                    item_ids.remove(cursor.getString(0));
                    listview.getChildAt(i).setBackgroundColor(Color.WHITE);
                }
            }

            public boolean onCreateActionMode(ActionMode actionMode, Menu menu) {
                MenuInflater inflater = actionMode.getMenuInflater();
                inflater.inflate(R.menu.sel_del_btn, menu);
                actionMode.setTitle("Select Item(s)");
                return true;
            }

            public boolean onPrepareActionMode(ActionMode actionMode, Menu menu) {
                return false;
            }

            public boolean onActionItemClicked(ActionMode actionMode, MenuItem menuItem) {
                if (menuItem.getItemId() == R.id.delete_ab_btn) {
                    AlertDialog.Builder del_builder = new AlertDialog.Builder(MainActivity.this);
                    View del_view = getLayoutInflater().inflate(R.layout.del_layout, null);
                    del_builder.setView(del_view);
                    AlertDialog del_dialog = del_builder.create();
                    del_dialog.show();

                    Button yes_btn = del_view.findViewById(R.id.yes_btn);
                    yes_btn.setOnClickListener((View v) -> {
                        for (String id : item_ids)
                            list_repository.deleteData(id);

                        Toast.makeText(MainActivity.this, "Selected item(s) successfully deleted", Toast.LENGTH_LONG).show();
                        del_dialog.dismiss();
                        update();
                    });

                    Button no_btn = del_view.findViewById(R.id.no_btn);
                    no_btn.setOnClickListener((View v) -> {
                        del_dialog.dismiss();
                    });
                }

                if(menuItem.getItemId() == android.R.id.home) {
                    // How to catch
                }
                update();
                actionMode.finish();
                return true;
            }

            public void onDestroyActionMode(ActionMode actionMode) {
            }
        });

逻辑有效。但是,当我选择“项目”时,只需单击“后退箭头”或在屏幕上的任意位置,即可取消选择,这些项目将保持选中状态,而不是被取消选择。

选择项目时

未选中时

正如您在代码中看到的那样,我为所选项目手动设置了不同的颜色。因为,这是我的实现最合适的逻辑。

单击后退箭头以再次手动重置颜色后,我尝试捕获一个事件,但是它不起作用,尤其是在取消选择时无法捕获其事件。

我该如何解决?在此先感谢您,如果我不够清楚,请告诉我,我会再试一次。

萨钦·瓦玛(Sachin Varma)

后退箭头事件可以通过使用来访问onDestroyActionMode(ActionMode actionMode)

 public void onDestroyActionMode(ActionMode actionMode) {
            Toast.makeText(MainActivity.this, "Clicked Back Button", Toast.LENGTH_SHORT).show();
        }

希望对您有所帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

一旦用户单击所选项目之一,我如何从 javascript 中删除所选项目

一旦单击任何项目,如何在li然后在li下的ul中添加班级

一旦用户单击它,如何在制表器中使单元格为空?

一旦不再可见,如何在 ViewPager2 中重置 ViewHolder 的视图状态?

如何在xml的输出中分配到分支的链接,以便一旦我在html的输出中单击它就可以打开它

一旦用户单击提交,如何从表中删除行/永久禁用提交按钮

一旦单击,如何在javascript函数中获取onclick按钮的标题?

一旦用户单击它,我如何确认此代码块是否可以验证电子邮件?

如何創建一個新變量,一旦在序列中達到最大值就保留它?

列表框项目初始化,但一旦被选中,我不知道如何重置没有选择任何项目的列表框

一旦将Rust可执行文件构建在Docker容器中,该如何获得它?

如何初始化变量,但是一旦完成,它的值就是最终的

这是注入的JavaScript代码吗?如何防止它一旦上传就出现?

一旦使用StreamWriter,我将如何重新启动它?

jQuery:一旦字段为空,请重置类

Android Alertdialog一旦我从单选项目中选择了一个项目,如何防止否定按钮确认操作

一旦执行ng-repeat,如何更改表格行的颜色

一旦按下触发器,如何更改整个对象的颜色?

如何通过在PC上单击或在Android上通过触摸来更改句子中单词的颜色

一旦单击该行,UITableview 中的子视图就会消失。

一旦在本机反应中单击提交按钮,即可清除文本输入数据

一旦你已经声明了一个字符串,你如何在 C 中编辑它?

一旦光标离开目标元素,如何在javascript中跟踪鼠标移动事件?

一旦Lottie动画达到特定帧,如何触发事件?

一旦使用jquery对标签的特定部分执行click事件,如何停止导航

如何锁定输出单元格的结果,一旦它符合条件,从 Google 表格中输入单元格的后续值更改中锁定?

一旦 13 位时间戳保存在 firebase 中,如何在 Xcode 中获取它并将其转换为日期?

一旦剩余项目等于零,如何显示获胜面板?

一旦所有项目都出现在View Controller中,请关闭UIAlertView