从另一个类调用 RecyclerView.Adapter 上的 notificationItemChanged()

2024-04-22

我有一个RecyclerView in AdapterActivity。单击其任何项目后,我使用我的更新该项目AlertDialogShow#UpdateStudent()方法。我的问题是无法刷新Adapter在 - 的里面UpdateStudent()方法使用notifyItemChanged().

我怎样才能刷新Adapter来自另一个不能直接访问的类Adapter?

In the AdapterActivityRecyclerView:

holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View v) {
            AlertDialogShow show =
                new AlertDialogShow(context, database, studentData, performanceData);
            show.UpdateStudent(studentName, studentId, classId, position);
        }
    }
}

The AlertDialogShow class:

public class AlertDialogShow {

    Context context;
    DatabaseHandler database;
    List<StudentTable> studentData;

    public AlertDialogShow(Context context, DatabaseHandler database,
                           List<StudentTable> studentData , List<PerformanceTable> performanceData) {
        this.context = context;
        this.database = database;
        this.studentData = studentData;
        this.performanceData = performanceData;
    }

    public AlertDialog UpdateStudent(final String studentName, final String studentId, 
                                     final int classId , final int position) {
        AlertDialog.Builder dialog = new AlertDialog.Builder(context);
        View viewLayout = LayoutInflater.from(context)
                                        .inflate(R.layout.alertdialog_edit_class_or_student , null);
        dialog.setView(viewLayout);

        final AlertDialog alertDialog = dialog.create();

        Button editStudent_btn = (Button)viewLayout.findViewById(R.id.item_btn_EditClassStudent_Edit);

        editStudent_btn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    database.UpdateStudentDatabase(classId , studentId_new , studentId, studentName_new);

                    StudentTable studentTable = studentData.get(position);
                    studentTable.setStudentName(studentName_new);
                    studentTable.setStudentId(studentId_new);
                    studentData.set(position , studentTable);
                    //notifyItemChanged(position); <-- cannot define this line
                }
            }
        );

        return alertDialog;
    }
}

更新中RecyclerView适配器只能在适配器本身或通过您的适配器实例完成Activity。要实现这些方法,您需要使用如下接口:

public class AlertDialogShow {

    public interface OnItemChange {
        void notifyAdapter(int position);
    }

    private OnItemChange listener;

    public AlertDialogShow(...) {
        this.listener = (MyActivity)context;
    }
}

然后在您的中编写 OnItemChange 接口的实现Activity像这样:

public class MyActivity extends ... implements AlertDialogShow.OnItemChange {

    @Override 
    public void notifyAdapter(int position) {
        // Notify your adapter item change here
        // e.g.: adapter.notifyItemChanged(position);
    }
}

然后你可以使用OnItemChange听众在你的AlertDialogShow像这样的类:

this.listener.notifyAdapter(position);

这将调用notifyAdapter(int position)方法在你的Activity并执行您在那里编写的代码。


祝你好运。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从另一个类调用 RecyclerView.Adapter 上的 notificationItemChanged() 的相关文章

  • 使用 Android 前台服务为 MediaPlayer 创建通知

    问题就在这里 我目前正在开发一个应用程序 该应用程序必须提供 A 广播播放器 来自 URL 的 AAC 直播 还有一个播客播放器 来自 URL 的 MP3 流 该应用程序必须能够在后台运行 Android 服务 并通过以下方式向用户公开持续
  • 检测到设备正在振动?

    我使用下面的代码来振动设备 public void vibrator try Vibrator vibrator Vibrator getSystemService Context VIBRATOR SERVICE vibrator vib
  • Android SoundPool 堆限制

    我正在使用 SoundPool 加载多个声音剪辑并播放它们 据我所知 它的功能 100 正确 但在 load 调用期间 我的日志中充斥着以下内容 06 09 11 30 26 110 ERROR AudioCache 23363 Heap
  • Phonegap - 如何将.txt文件保存在Android手机的根目录中

    我正在尝试使用phonegap 将 txt 文件保存在Android 手机的根目录中 我已经安装了这些插件 cordova plugin file 和 cordova plugin file transfer 在 config xml 文件
  • 设置从 Facebook 登录获取用户电子邮件 ID 的权限

    我在用着Facebook 3 0 SDK对于安卓 我必须实施Facebook登录 我正在访问用户的基本信息 例如姓名 用户 ID 但我也想访问用户的电子邮件 我浏览了很多博客和论坛 但不知道该怎么做 我正在使用我自己的 android 按钮
  • Android Studio 在编译时未检测到支持库

    由于 Android Studio 将成为 Android 开发的默认 IDE 因此我决定将现有项目迁移到 Android studio 中 项目结构似乎不同 我的项目中的文件夹层次结构如下 Complete Project gt idea
  • 如何查找 Android 设备中的所有文件并将它们放入列表中?

    我正在寻求帮助来列出 Android 外部存储设备中的所有文件 我想查找所有文件夹 包括主文件夹的子文件夹 有办法吗 我已经做了一个基本的工作 但我仍然没有得到想要的结果 这不起作用 这是我的代码 File files array file
  • 在 Jetpack Compose 中启动动画矢量 Drawable

    我有一个动画矢量可绘制R drawable my anim 我想在 Jetpack Compose 中展示并开始 可绘制对象显示 渲染正确 但动画未启动 这是撰写视图 Composable fun SplashView Surface mo
  • ROOM迁移过程中如何处理索引信息

    CODE Entity tableName UserRepo indices Index value id unique true public class GitHubRepo PrimaryKey autoGenerate true p
  • MediaCodec 创建输入表面

    我想使用 MediaCodec 将 Surface 编码为 H 264 使用 API 18 有一种方法可以通过调用 createInputSurface 然后在该表面上绘图来对表面中的内容进行编码 我在 createInputSurface
  • 检查 Android 手机上的方向

    如何查看Android手机是横屏还是竖屏 当前配置用于确定要检索的资源 可从资源中获取Configuration object getResources getConfiguration orientation 您可以通过查看其值来检查方向
  • Android相机意图:如何获取全尺寸照片?

    我正在使用意图来启动相机 Intent cameraIntent new Intent android provider MediaStore ACTION IMAGE CAPTURE getParent startActivityForR
  • 调节麦克风录音音量

    我们正在尝试调整录音时的音量级别 麦克风似乎非常敏感 会接收到很多静电 我们查看了 setVolumeControlStream 但找不到传入其中来控制麦克风的流 将您的音频源设置为 MIC using MediaRecorder Audi
  • Android 设备上的静默安装

    我已经接受了一段时间了 在 Android 上静默安装应用程序是不可能的 也就是说 让程序安装捆绑为 APK 的应用程序 而不提供标准操作系统安装提示并完成应用程序安装程序活动 但现在我已经拿到了 Appbrain 快速网络安装程序的副本
  • 下载后从谷歌照片库检索图像

    我正在发起从图库中获取照片的意图 当我在图库中使用 Nexus 谷歌照片应用程序时 一切正常 但如果图像不在手机上 在 Google Photos 在线服务上 它会为我下载 选择图像后 我将图像发送到另一个活动进行裁剪 但在下载的情况下 发
  • 将 JSON 参数从 java 发布到 sinatra 服务

    我有一个 Android 应用程序发布到我的 sinatra 服务 早些时候 我无法读取 sinatra 服务上的参数 但是 在我将内容类型设置为 x www form urlencoded 之后 我能够看到参数 但不完全是我想要的 我在
  • 当手机旋转(方向改变)时如何最好地重新创建标记/折线

    背景 开发一个使用 Android Google Map v2 的本机 Android 应用程序 使用android support v4 app FragmentActivity 在 Android v2 2 上运行 客观的 在更改手机方
  • 保护 APK 中的字符串

    我正在使用 Xamarin 的 Mono for Android 开发一个 Android 应用程序 我目前正在努力使用 Google Play API 添加应用内购买功能 为此 我需要从我的应用程序内向 Google 发送公共许可证密钥
  • 在webview android中加载本地html文件

    我正在尝试在 android 的 webview 中加载 html 文件的内容 但是 它给了我 网页不可用错误 如果我尝试使用谷歌或雅虎等网站 它们就会起作用 html文件位于src gt main gt assests gt index
  • 在 Google 地图上绘制线条/路径

    我很长一段时间都在忙于寻找如何在 HelloMapView 中的地图上的两个 GPS 点之间画一条线 但没有运气 谁能告诉我该怎么做 假设我使用扩展 MapView 的 HelloMapView 我需要使用叠加层吗 如果是这样 我是否必须重

随机推荐

  • 我可以转换 Flex 框的 Flex-Grow 来生成动画吗?

    是否可以转换弹性盒中的项目 当您单击时 我希望除单击的项目之外的所有项目都折叠起来 单击的空间应使用容器中的所有可用空间 only works once item click function item not this each func
  • 如何通过node.js中的@azure/storage-blob获取blob存储中文件的安全url?

    我正在使用 azure storage blob 我可以上传文件 但如何检索它 有什么想法如何获取存储的 SAS url 我需要生成几分钟后过期的 url 并且 url 是基于令牌的 因为容器不供公共访问 请在 node js 中提供帮助或
  • 将元数据设置为 mp4

    我在以下的帮助下对视频进行编码MediaCodec and MediaMuxer 结果我有 mp4 视频文件 如何为此 mp4 文件设置元数据 创建时间 媒体元数据检索器 http developer android com intl ru
  • 如何配置@typescript-eslint规则

    我正在尝试转换为 typescript eslint但文档似乎非常缺乏 例如 我收到这样的错误 Line 58 Expected a semicolon typescript eslint member delimiter style 我想
  • 显示默认展开的 Android 通知操作按钮

    有没有办法在默认展开的通知中显示操作按钮 我使用持续通知来控制应用程序中的训练过程 我希望在通知区域中出现通知后立即显示 停止 和 暂停 等控制按钮 您无法展开通知 唯一的解决方案是 设置 优先级最大 然后将其展开到通知列表的顶部 这也取决
  • 在shinyapp中包含来自网络的图像的LaTeX PDF

    我曾经能够将来自 URL 的图像包含在由闪亮的应用程序生成的 PDF 报告中 url com 几个 markdown 版本之后我收到以下错误 Unable to load picture or PDF file https i0 wp co
  • 通过函数向 with() 传递参数

    有一种方法可以将参数从函数传递给with 就像是 dados lt data frame x 1 10 v1 rnorm 10 v2 rnorm 10 with dados v1 v2 Works func lt function data
  • 使用相同的 Symfony 2 表单进行编辑和删除(字段差异)

    目前我有一个表格 class Project extends AbstractType public function buildForm FormBuilder builder array options builder gt add n
  • 在 os x 上编译 libuv 的库?

    我正在尝试学习一些 libuv 似乎有一本很棒的书介绍了它 然而 这本书并没有解释如何实际编译它 我对从 github 中提取的代码运行 make 并按照 github 上的描述使用 GYP 进行编译 https github com jo
  • Hive - 通过聚合跨组的值来创建映射列类型

    我有一个看起来像这样的表 customer category room date 1 A aa d1 1 A bb d2 1 B cc d3 1 C aa d1 1 C bb d2 2 A aa d3 2 A bb d4 2 C bb d4
  • 按键列合并两个 data.frames

    我有两个数据框 在第一个中 我有一个 KEY ID 列和两个变量 KEY V1 V2 1 10 2 2 20 4 3 30 6 4 40 8 5 50 10 在第二个数据框中 我有一个 KEY ID 列和第三个变量 KEY V3 1 5 2
  • 以编程方式调用多部分表单方法

    我的 WebApi 有以下方法 HttpPost Route foo bar Consumes multipart form data DisableRequestSizeLimit public async Task
  • CakePHP ajax 帖子不断返回 400 Bad Request

    我正在尝试使用 ajax post 来执行操作 GET 请求工作正常 但当我尝试 POST 时 我在 firebug 中看到 400 Bad Request 并且视图返回 黑洞 响应 这是 Jquery 请求 ajax url usermg
  • 如何将 Kivy 的一个财产绑定到另一个财产?

    我想将小部件的属性绑定到子小部件的属性 因此 当根小部件属性更改时 更改也会传播到子属性 我这样尝试过 self Child MyProperty self MyProperty 这有时有效 但有时它不起作用 我无法找出它何时起作用 为什么
  • MediaPlayer.prepare() 在 Android L 上抛出 IllegalStateException

    我有从 asset 目录播放 mp3 文件的代码 MediaPlayer mediaPlayer new MediaPlayer descriptor context getAssets openFd beep mp3 mediaPlaye
  • 将字符串转换为 UTF-8

    例如 我有一个分配给编码为 ansi 的变量的字符串str 如何将其编码为 UTF 8 你的意思是当它写入文件时 像这样 Set stream CreateObject ADODB Stream stream Open stream Typ
  • Pylint 找不到 SQLAlchemy 查询成员

    我有一个使用 Flask SQLAlchemy v2 0 的 Flask v0 10 1 应用程序 我正在尝试配置 Pylint 来检查它 使用 Python 3 4 2 运行 第一个错误是 Instance of SQLAlchemy h
  • Unix域SOCK_DGRAM和SOCK_SEQPACKET之间的区别?

    根据 Unix 套接字的 Linux 手册页 UNIX 域中的有效套接字类型是 SOCK DGRAM 对于保留消息边界的面向数据报的套接字 与大多数 UNIX 实现一样 UNIX 域数据报套接字始终可靠且不可靠 不重新排序数据报 以及 自
  • 发送 HTTP 标头后,服务器无法附加标头

    我在我的 ASP NET C Web 应用程序中间歇性地收到此异常 发送 HTTP 标头后 服务器无法附加标头 这是由于应用程序在发送页面后将内容附加到页面响应标头而引起的 我不确定为什么它是间歇性的 但我需要做的是在修改标题之前执行检查
  • 从另一个类调用 RecyclerView.Adapter 上的 notificationItemChanged()

    我有一个RecyclerView in AdapterActivity 单击其任何项目后 我使用我的更新该项目AlertDialogShow UpdateStudent 方法 我的问题是无法刷新Adapter在 的里面UpdateStude