Activity.java 中的多个选定项 RecyclerView

2024-01-09

我有一个RecyclerView来自本地的数据JSON in CardView。当单击一个或某个项目时(更改所选项目的背景或突出显示)(例如在 Line App 中编辑)但没有 Button 或,我需要在选定的项目上实现longpress。但我不想使用StateListDrawable或者(使用 XML)因为我有一些JSON后面需要处理的数据。

我的活动中需要一个状态,例如布尔值或其他东西来保存我单击的每个项目,但我再次没有任何解决方案。我已经阅读并尝试了一些教程,但它不起作用。这是我现在的活动下面:

adapter.setOnRecyclerViewClickedListener(new Adapter.OnRecyclerViewItemClickedListener() {
        @Override
        public void OnRecyclerViewItemClicked(int position) {
            boolean selectedItem = false;

            adapter.setOnRecyclerViewClickedListener(new Adapter.OnRecyclerViewItemClickedListener() {

        @Override
        public void OnRecyclerViewItemClicked(int position)  {

    /* ------ boolean variabel for adapter but still not work ----- */
            JSONObject filteredtableList= null;

            try {
                filteredtableList= new JSONObject("response").getJSONObject("tTisch");
            }
            catch (JSONException e) {
                e.printStackTrace();
            }

                if (recyclerView == null) {
                    try {
                        filteredtableList.has("true");
                        filteredtableList.put(status, true);
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
                else {
                    try {
                        filteredtableList.put(status, true);

                    }
                    catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            adapter.updateData(filteredTableList);

//----------------------------------------------------
            try {
                Toast.makeText(TableActivity.this, filteredTableList.getJSONObject(position).getString("tischnr"), Toast.LENGTH_SHORT).show();
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    });

适配器.java

public int lastCheckedPosition = -1;
.........
.........
.........
    @Override
public void onBindViewHolder(ViewHolder holder, int position) {

    if (position == lastCheckedPosition) {
        holder.itemView.setBackgroundResource(R.color.colorRedTableOcc);
    } else {
        holder.itemView.setBackgroundResource(R.color.colorTableGreen);
    }

    try {
        currItem = list.getJSONObject(position);
        holder.txt_no_table.setText(currItem.getString("tischnr"));

    } catch (JSONException e) {
        e.printStackTrace();
    }
}


@Override
public int getItemCount() {
    return list.length();
}

public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

    public TextView txt_no_table;

    public ViewHolder(View itemView) {
        super(itemView);
        itemView.setOnClickListener(this);

        txt_no_table = (TextView) itemView.findViewById(R.id.txt_no_table_empty);
    }

    @Override
    public void onClick(View itemView) {

        recyclerViewItemClickedListener.OnRecyclerViewItemClicked(getAdapterPosition());

        lastCheckedPosition = getAdapterPosition();
        notifyItemRangeChanged(0,list.length());
    }
}

JSON.json

..............
"t-tisch": [
            {
                "tischnr": 1,
                "departement": 1,
                "normalbeleg": 0,
                "kellner-nr": 0,
                "bezeich": "TABLE 01",
                "roomcharge": false,
                "betriebsnr": 0
            },
            {
                "tischnr": 2,
                "departement": 1,
                "normalbeleg": 0,
                "kellner-nr": 0,
                "bezeich": "TABLE 02",
                "roomcharge": false,
                "betriebsnr": 0
            },
............

这是我的活动看起来像

Update

现在输出:

现在,当我单击该项目时,它会突出显示(感谢@Burhanuddin Rashid),但对于我的情况来说,它仍然是一半。我只能选择一项(无法选择多个/更多项目)。当我单击突出显示的项目时,我需要再次取消选择。

编辑:我尝试在 JSON 中编写新对象和密钥(上面的 JSON 代码)。按照我的逻辑,它会为每个项目是否被选择创建一个标志,但它仍然不起作用。

编辑:这是我的日志错误:

                  --------- beginning of crash
E/AndroidRuntime: FATAL EXCEPTION: main
              Process: com.example.development_laptop.vhp_restotemp, PID: 3590
              java.lang.NullPointerException: Attempt to invoke virtual method 'org.json.JSONObject org.json.JSONObject.put(java.lang.String, boolean)' on a null object reference
                  at com.example.development_laptop.vhp_restotemp.TableActivity$1.OnRecyclerViewItemClicked(TableActivity.java:74)
                  at com.example.development_laptop.vhp_restotemp.com.example.development_laptop.vhp_restotemp.recyclerview.source.Adapter$ViewHolder.onClick(Adapter.java:97)
                  at android.view.View.performClick(View.java:5198)
                  at android.view.View$PerformClick.run(View.java:21147)
                  at android.os.Handler.handleCallback(Handler.java:739)
                  at android.os.Handler.dispatchMessage(Handler.java:95)
                  at android.os.Looper.loop(Looper.java:148)
                  at android.app.ActivityThread.main(ActivityThread.java:5417)
                  at java.lang.reflect.Method.invoke(Native Method)
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

您可以像这样应用 setOnClickListener:-

View itemView;
    Context context;


    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
         itemView = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.card_view, parent, false);
        this.context=parent.getContext();
        return new ViewHolder(itemView);
    }
    @Override
        public void onBindViewHolder(final ViewHolder holder, int position) {

            holder.itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                        holder.linearLayout.setBackgroundColor(context.getResources().getColor(R.color.colorAccent,null));
                    }
                    else {
                        holder.linearLayout.setBackgroundColor(context.getResources().getColor(R.color.colorAccent));

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

Activity.java 中的多个选定项 RecyclerView 的相关文章

  • Locale.getDefault().getCountry() 返回空字符串

    我正在尝试使用国家 地区代码获取用户语言 例如en US es es 但是当我使用Locale getDefault getCountry 它返回空字符串 虽然它给了我正确的语言Locale getDefault getLanguage N
  • Python Kivy - 在本机网络浏览器中打开 url 的应用程序

    我尝试制作一个简单的应用程序 在单击 Screen One 上的按钮后 在 Kivy 中打开一个网页 我使用了这个主题 Python 在应用程序中直接显示网络浏览器 iframe https stackoverflow com questi
  • 尝试在没有 GatewayIntent 的情况下访问消息内容

    我希望每当我写一条打招呼的消息时 机器人都会在控制台中响应一条消息 但它只是给我一个错误 JDA MainWS ReadThread WARN JDA Attempting to access message content without
  • 在 Android 中使用 iText 读取或打开 PDF 文件

    我是 Android 应用程序开发新手 使用 iText 我完成了 PDF 创建并在创建的文件上写入 现在我想阅读该 PDF 文件 如何使用 iText 打开或阅读 PDF 文件 例子将是可观的 那么提前 哪个是渲染 PDF 文件的最佳库
  • 参数动态时如何构建 JPQL 查询?

    我想知道是否有一个好的解决方案来构建基于过滤器的 JPQL 查询 我的查询太 富有表现力 我无法使用 Criteria 就像是 query Select from Ent if parameter null query WHERE fiel
  • 如何从SurfaceView绘制到Canvas?

    我正在尝试做简单的画家 问题是Android看起来有三个独立的Canvas并给我它来顺序绘制 我用以下方式制作了用户界面SurfaceView 把霍尔德从中拿走 Override protected void onCreate Bundle
  • 从 html 页面和 javascript 调用 java webservice

    我正在尝试从 javascript 调用 java 实现的 Web 服务 使用 NetBeans IDE 我读过很多关于 jQuery 和 AJAX 的内容 但我似乎无法掌握它 假设我的 Web 服务 WSDL 位于 http localh
  • 从 Java 日历迁移到 Joda 日期时间

    以前 当我第一次设计股票应用相关软件时 我决定使用java util Date表示股票的日期 时间信息 后来我体会到了大部分方法java util Date已弃用 因此 很快 我重构了所有代码以利用java util Calendar 然而
  • 模拟器:进程已完成,退出代码为 134(被信号 6:SIGABRT 中断)

    我最近刚刚开始在 Mac 上下载 Android Studio 版本 3 0 1 但收到以下错误 模拟器 进程已完成 退出代码为 134 被信号 6 SIGABRT 中断 我按照 Android Studio 教程操作并能够运行模拟器 但在
  • 如何使用 Mockito 和 Junit 模拟 ZonedDateTime

    我需要模拟一个ZonedDateTime ofInstant 方法 我知道SO中有很多建议 但对于我的具体问题 到目前为止我还没有找到任何简单的解决办法 这是我的代码 public ZonedDateTime myMethodToTest
  • 如何在android中录制音频时暂停背景音乐

    我正在 Android 中开发一个音频记录应用程序 因此 如果设备音乐播放器中已播放任何背景音乐 则应在开始录制之前暂停该背景音乐 并且每当录制停止或暂停时 背景音乐都应恢复 播放录制的音频时也应该如此 有人可以帮我解决这个问题吗 提前致谢
  • ExceptionHandler 不适用于 Throwable

    我们的应用程序是基于 Spring MVC 的 REST 应用程序 我正在尝试使用 ExceptionHandler 注释来处理所有错误和异常 I have ExceptionHandler Throwable class public R
  • 带有空白白屏的 WebView

    我在 DialogFragment 中有一个 webview 它使用以下方式显示文档和 PDF它可以进行几次尝试 但如果用户尝试频繁打开和关闭对话框 webview 将显示空白屏幕 我已经尝试了所有的线程link1 https stacko
  • 来自客户端的超时 Web 服务调用

    我正在使用 RestEasy 客户端调用网络服务 一项要求是 如果调用运行时间超过 5 秒 则中止 超时调用 我如何使用 RestEasy 客户端实现这一目标 我只看到服务器端超时 即如果在一定时间内未完成请求 Rest Easy 网络服务
  • Spock模拟inputStream导致无限循环

    我有一个代码 gridFSFile inputStream bytes 当我尝试这样测试时 given def inputStream Mock InputStream def gridFSDBFile Mock GridFSDBFile
  • 按名称查找视图

    是否可以通过名称而不是 id 来查找视图 findViewById R id someView 但我想做这样的事情 findViewByName someView 在处理 xml 时 您必须通过标识符查找视图 但是您可以使用以下方式查找标识
  • Android应用程序kill事件捕获

    我想在我的应用程序被终止时执行一些操作 可以使用哪种方法来实现此目的 我正在开发 Android 5 0 这个问题的关键在于 您必须了解您的申请是否可以收到任何 当您的应用程序在任何情况下被终止时的额外回调 下面的答案是由德文连线 http
  • Amazon IAP 不会调用 onPurchaseResponse

    我有一个 Android 应用程序 它使用 IAP 我正在发送PurchasingManager initiateGetUserIdRequest 并得到用户识别成功 in onGetUserIdResponse 得到回复后Purchasi
  • Android:获取最新意图

    如何获取发送到活动的最后一个意图 的文档onNewIntent 建议我需要做这样的事情 class MyActivity public void onNewIntent Intent intent setIntent intent reac
  • 在 Android 中更新到 API 26 时,清单合并失败并出现多个错误

    我尝试使用 API 26 更新我的 gradle 安卓工作室2 3 3 但我在编译项目时遇到以下错误 这是我收到的错误的屏幕截图 应用级别build gradle Top level build file where you can add

随机推荐

  • fscanf() 仅拾取文件的第一行

    我有一个制表符分隔文件 我正在尝试将其转换为制表符分隔文件 我正在使用 C 我在尝试读取文件的第二行时遇到了困难 现在我只有数万行重复第一行 include
  • R 中的豪斯曼类型测试

    我一直在使用 plm 包的R进行面板数据分析 该软件包中用于选择 固定效应 或 随机效应 模型的重要测试之一称为豪斯曼型 Stata 也可进行类似的测试 这里的重点是Stata要求首先估计固定效应 然后再估计随机效应 但是 我在 plm 包
  • 如何在factory_bot中定义数组/哈希?

    我正在尝试编写一个测试来模拟 Dropbox 的 REST 服务的一些返回值 该服务以数组形式返回数据 并带有嵌套哈希 我无法弄清楚如何对我的工厂进行编码 因为返回结果是一个内部有 has 的数组 这里会放什么 Factory define
  • 如何在 Ruby 中使对象实例成为哈希键?

    我有一个带有一些成员变量的 Foo 类 当类的两个实例中的所有值都相等时 我希望对象 相等 然后我希望这些对象成为我的哈希中的键 当我当前尝试此操作时 哈希将每个实例视为不相等 h f1 Foo new a b f2 Foo new a b
  • 在景观中隐藏选项卡栏而不推送到 NavigationController

    我想在横向显示没有选项卡栏的另一个视图 所以我创建一个新视图 只更改self view and self hidesBottomBarWhenPushed YES 但这对我不起作用 希望有人能帮忙吗 只需将这一行添加到您的viewWillA
  • 在 Haskell 中使用递归查找列表中的出现次数

    我有一个列表 它只能包含两种元素 Apple and Peach 我需要创建一个函数 给定一个包含这些元素的列表 该函数返回出现的次数Apple通过使用递归在列表中 这是我的尝试 data Fruit Apple Peach findFru
  • 自动将 jupyter 笔记本转换为 .py

    我知道对此有一些疑问 但我还没有发现任何足够可靠的内容 目前我正在从终端使用一个创建 py 的命令 然后将它们移动到另一个文件夹 jupyter nbconvert to script folder notebooks notebook i
  • “图像视图”的位置和大小不明确

    我试图设置 UIImageView 在故事板中没有固定的大小和宽度 我将容器的前导空间设置为大于或等于 20 将容器的顶部空间设置为大于或等于 20 将容器的尾随空间设置为大于或等于 20 并将 UICollectionView 的垂直间距
  • 将用户/密码添加到 SOAPHeader 以使用 AXIS2 进行 WebService 客户端调用

    请帮助 我正在尝试从 SOAPUI 调用 WebService 我注意到该服务需要我通过请求参数提供的用户名和密码 我注意到原始 XML 包含添加到 SOAPHeader 中的用户 密码片段 片段如下
  • div 可以有多个类吗(Twitter Bootstrap)[重复]

    这个问题在这里已经有答案了 一个div标签可以有两个类吗 我正在使用 twitter bootstrap 并且我想使用两个预定义的类 一个是一个active我想在一个类上使用dropdown toggle在导航栏中 在 html 中解决这个
  • ASP.Net 会话超时:为什么默认使用 20 分钟?

    在 ASP Net 中 默认会话超时设置为 20 分钟 为什么这样 这背后有什么具体原因吗 不应将其设置为高于 20 分钟 特殊情况除外 因为每个打开的会话都会占用内存 From MSDN 站点上的 Session Timeout http
  • 我可以控制 RealityKit 中的 Reality Composer 行为吗?

    我想使用 SwiftUI 制作一个按钮 当按下按钮时 模型将隐藏 我已经阅读了此链接中的教程 创建触发器 https developer apple com documentation realitykit creating a trigg
  • OpenGLES 中的屏幕到世界坐标转换是一项简单的任务吗?

    iPhone 上的屏幕与世界问题e 我有一个在 EAGLView 中渲染的 3D 模型 CUBE 我希望能够检测到何时触摸立方体的给定面 从任何方向角度 的中心 听起来很容易 但事实并非如此 问题 如何准确地将屏幕坐标 触摸点 与世界坐标
  • JAVAFX / WebView / WebEngine FireBugLite 或其他一些调试器?

    我正在开发一个应用程序 需要在应用程序的 WebView WebEngine 部分运行调试器 以便我可以更好地调试我的应用程序 但我在互联网上找到的注入 Firebug Lite 的代码由于某种原因无法正常工作 如果我在 Firefox 控
  • 处理来自 IOS 设备的请求时发生异常

    我正在尝试在 iOS 设备上播放视频 当我尝试玩时出现以下错误 27 Apr 2015 06 59 30 GET media 2015 04 VID 20150327 112644 mp4 HTTP 1 1 200 18 Exception
  • 未在 Blazor 服务器端应用程序中创建本地化 Cookie

    我设置了本地化Startup cs services AddLocalization options gt options ResourcesPath Resources and var supportedCultures new en U
  • 将代码从 RestSharp 转换为 HttpClient

    有人可以帮我将这个使用 RestSharp 的 ASP Net Core 示例 在我的 Web Api 中使用以使用来自 Auth0 的管理 API 转换为使用 HttpClient 的示例吗 var client new RestClie
  • 如何在Python中运行并行程序

    我有一个 python 脚本来使用 os subprocess 模块运行一些外部命令 但其中一个步骤需要花费大量时间 因此我想单独运行它 我需要启动它们 检查它们是否完成 然后执行下一个不并行的命令 我的代码是这样的 nproc 24 fo
  • 使用 PHP 保护文档

    我有一个简单的登录 访问控制系统来保护一些受限制的页面 但在这些页面内有一些需要保护的链接 即Word文档 因此 如果我将这些资源保留在 webroot 中 它们就可以通过 URL 访问 保护受限制页面内的这些资源的最佳方法是什么 我知道我
  • Activity.java 中的多个选定项 RecyclerView

    我有一个RecyclerView来自本地的数据JSON in CardView 当单击一个或某个项目时 更改所选项目的背景或突出显示 例如在 Line App 中编辑 但没有 Button 或 我需要在选定的项目上实现longpress 但