Android ListView 有两个按钮设置可见性问题

2024-01-21

I have Drag Sort Listview https://github.com/bauerca/drag-sort-listview与以下项目。

1) 文本视图
2)两个按钮(ON和OFF,一次只有一个按钮可见)

关闭状态的图像 http://postimg.org/image/xbo47xghv/.
ON 状态的图像 http://postimg.org/image/g3a55icph/.

我的问题是,当用户单击“打开”并滚动列表视图并返回到该项目时,它不会更改为“打开”。

我试过 :

public class Item {

    public String title;  
    boolean selected = false;

}
public void setSelected(boolean selected) {
    this.selected = selected;
}

getView() 方法内部:

 public View getView(final int position, View convertView,
            ViewGroup parent) {
        View v = super.getView(position, convertView, parent);
        if (v != convertView && v != null) {
            ViewHolder holder = new ViewHolder();
            TextView tv = (TextView) v.findViewById(R.id.txtsettingname);
            ImageButton btnoff = (ImageButton) v.findViewById(R.id.btnoff);
            ImageButton btnon = (ImageButton) v.findViewById(R.id.btnon);
            holder.title = tv;
            holder.btnoff = btnoff;
            holder.btnon = btnon;
            v.setTag(holder);
        }
        final ViewHolder holder = (ViewHolder) v.getTag();
        String albums = getItem(position).title;
        holder.btnoff.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                try {
                    ImageButton cb = (ImageButton) v;
                    Item _state = (Item) cb.getTag();
                    _state.setSelected(false);
                    holder.btnon.setVisibility(View.VISIBLE);
                    holder.btnoff.setVisibility(View.GONE);


            } catch (Exception e) {
                // TODO: handle exception
                e.printStackTrace();
            }
        }
    });
    holder.btnon.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            try {
                ImageButton cb = (ImageButton) v;
                Item _state = (Item) cb.getTag();
                _state.setSelected(true);

                // TODO Auto-generated method stub
                holder.btnoff.setVisibility(View.VISIBLE);
                holder.btnon.setVisibility(View.GONE);



            } catch (Exception e) {
                // TODO: handle exception
                e.printStackTrace();
            }
        }
    });

    holder.title.setText(albums);
    Item state = myarrraylist.get(position);

    if (state.isSelected()) {
        holder.btnon.setVisibility(View.VISIBLE);
        holder.btnoff.setVisibility(View.GONE);
    } else {
        holder.btnon.setVisibility(View.GONE);
        holder.btnoff.setVisibility(View.VISIBLE);
    }
    holder.btnon.setTag(state);

    return v;
}

请帮忙。


您只需维护选定的“开”或“关”状态,只需保存按钮的位置并获取它,然后保存状态以获取您可以看到的更多详细信息ListView 的回收是如何工作的 http://android.amberfog.com/?p=296。另外,对于一个工作演示示例,您可以查看我的博客老鼠料理鼠王 https://stackoverflow.com/a/22602934/726863在这个答案中已经指出。

我只显示btnoff按钮的操作方式与其他按钮相同

Psuedo code在你的代码中会是这样的,

public View getView(final int position, View convertView,
            ViewGroup parent) {
           ViewHolder holder;
        if (convertView == null) {
            holder = new ViewHolder();
            holder.title tv = (TextView) convertView.findViewById(R.id.txtsettingname);
            holder.btnoff btnoff = (ImageButton) convertView.findViewById(R.id.btnoff);
            holder.btnon btnon = (ImageButton) convertView.findViewById(R.id.btnon);

        holder.btnoff.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
            int pos = (Integer)v.getTag();
        myarrraylist.get(pos).setSelected(false);
        }
    });

            convertView.setTag(holder);
        }
        else{
    holder = convertView.getTag();
        }

        holder.btnoff btnoff.setTag(position);
        holder.btnoff btnon.setTag(position);


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

Android ListView 有两个按钮设置可见性问题 的相关文章

  • TypedArray 的 getResourceId 方法

    我正在阅读有关的文档获取资源Id https developer android com reference android content res TypedArray html getResourceId int 20int 方法 它说
  • Android NDK 中使用“dynamic_cast”时出现“UnsatisfiedLinkError”

    我是 Android 开发新手 我面临下一个问题 当我使用 C 代码时 动态演员 表达方式 不满意的链接错误 当我在模拟器上启动应用程序时出现 但是当我在没有它的情况下运行应用程序时 一切正常 我的意思是 LogCat 没有任何错误 我尝试
  • ProGuard 无法与 Windows 中使用的 Joda Time 一起编译

    实际上 这是一个答案 而不是一个问题 我确实在 Windows 上花了很多时间 使用 JodaTime 并使用 ProGuard 将其包含在我的 Android 项目中 混淆器配置 libraryjars C Users Reto Docu
  • 如何从一个代码库创建多个 Android 应用

    我有一个 Android 代码库 它使用带有设置的 API 来获取多个应用程序的不同数据 所有应用程序都使用相同的代码库 但进行一两个设计调整 那么如何重用主代码库而不必每次都复制整个 Android 项目呢 iPhone 在同一个项目中使
  • Android 应用被 Google Play 拒绝

    我最近向 Google Play 商店提交了一个 Android 应用程序 但收到一条消息说我的应用程序已被拒绝 我不确定问题是什么 也找不到确切的解决方案 拒绝原因 违反了禁止行为条款 内容政策 经过定期审核后 我们确定您的应用程序支持
  • Android:应用内计费V3超时返回哪个响应码?

    出现网络超时情况时 Google Play 应用内结算服务 ice er V3 将返回哪些响应状态代码 它的所有功能都是统一的吗 我将在这里描述我的发现 我通过拔掉主机插头 在安装了全功能 GP GP Store V3 10 10 GP S
  • 以编程方式更新 Android 中的联系人姓名和电话号码

    我创建一个应用程序来读取 更新 删除联系人详细信息 这是更新联系人姓名和电话号码的问题 有人可以帮助我吗 我该怎么做 我正在使用以下代码 但它不起作用 Override public View onCreateView LayoutInfl
  • 如何在android中设置多个闹钟,在这种情况下最后一个闹钟会覆盖以前的闹钟

    我正在开发一个Android应用程序 用户可以在其中设置提醒时间 但我在以下代码中遇到一个问题 即最后一个警报会覆盖之前的所有警报 MainActivity java public void setreminders DatabaseHan
  • 应用内结算错误

    我的 UNMANAGED 应用内购买无法正常工作 在它完美运行之前 我可以使用测试帐户成功购买 但它突然不起作用了 因为我记得我对商家帐户所做的只是添加更多 2 4 个测试帐户 添加后 我的应用内购买将不起作用 所以我更新了公钥并上传了一个
  • 如何强制从本机代码打开 Android 软键盘?

    我有一个游戏 当用户触摸屏幕时 它使用从 C 到 Java 的回调来强制打开软键盘 Java代码很简单是这样的 this inputMethodManager toggleSoftInput InputMethodManager SHOW
  • 如何将 android.net.Uri 转换为 java.net.URL? [复制]

    这个问题在这里已经有答案了 有没有办法从Uri to URL 我正在使用的库需要这个 它only接受一个URL但我需要在我的设备上使用图像 如果该方案的Uri is http or https new URL uri toString 应该
  • 从 TextView 中显示的数字中删除小数点[重复]

    这个问题在这里已经有答案了 对于我的简单计算器 我将结果显示在TextView 但它总是显示小数 我怎样才能删除它们 这是我的代码 public class MainActivity extends Activity implements
  • onClick 未在带有子项的 LinearLayout 上触发

    我有一个自定义的 LinearLayout 和一个较小的 TextView 子级 我希望能够单击 TextView 未覆盖的区域 因此我将 clickable true 和 onclicklistener 设置为 LinearLayout
  • BottomSheetDialog get Behavour 始终返回 null

    我与底部表单对话框我必须获得行为才能设置setBottomSheetCallback 来处理一些事情 As 谷歌说 https android developers googleblog com 2016 02 android suppor
  • 在Android Studio中更改项目主题?

    我使用浅色主题创建了一些项目 现在我想将其更改为深色 但我不知道该怎么做 顺便说一句 我不是问如何在代码中做到这一点 只是问如何更改项目的默认主题 在 AndroidManifest xml 的 application 标签下 您可以设置您
  • 将图像添加到自定义 AlertDialog

    我制作了一个 AlertDialog 让用户可以从我显示的 4 个选项中选择一个 前 3 个让他们在单击号码时直接拨打号码 第 4 个显示不同的视图 现在看起来是这样的 由于第四个选项的目的是不同的任务 我想让它看起来不同 因为用户可能会感
  • FCM onMessageReceived 应用程序运行时返回空白消息和标题

    正如您在标题中所写 当应用程序关闭时 它运行良好 并且onMessageReceived获取消息正文和标题 但如果应用程序处于前台模式 运行模式 则可以发送通知 但没有消息和标题 请问该怎么办 代码 Override public void
  • 在没有 Wifi 的情况下获取 Android 设备的 MAC 地址

    如何获取没有 Wifi 接口的 Android 设备 例如 Android 模拟器 的网络接口的 MAC 地址 通过WifiManager返回获取的WifiInfonull EDIT 更清楚地说 我必须与本地网络上的现有网络协议 不是我设计
  • Android ScrollView fillViewport 不工作

    我有一个简单的布局 名称位于顶部 按钮位于屏幕底部 或者超出该按钮 以防我添加更多项目 所以我使用带有 LinearLayout 的 ScrollView 如下所示
  • 在 Android 中使用 iText 将图像添加到特定位置

    我想使用 Android 中的 iText 将图像添加到 PDF 文件中的特定位置 这是一个可填写的表单 我添加了作为图像占位符的文本框 我想要做的就是像这样获取该文本框和图像 public class FormFill public st

随机推荐

  • ASP .NET Core Razor:模型绑定复杂类型不得是抽象或值类型,并且必须具有无参数构造函数

    如果我的模型中有这样的属性 BindProperty public IPagedList
  • Dijkstra最短路径算法

    以下是我们教授给我们的算法摘要 步骤 3 中提到的图中节点的父节点是什么 我有点困惑 因为我认为节点只有邻居而没有父节点 我的第二个问题是关于第 3 步 拾取堆栈中的第索引条记录 由于堆栈只允许您查看顶部 所以我不确定拾取第索引记录意味着什
  • Oracle中如何向触发器发送参数

    目的是向触发器发送额外信息 例如来自 Web 应用程序的当前用户 ID 由于使用了连接池 并且所有连接都使用相同的用户 ID 如何传递原始 Web 用户 ID 来触发 它是一个基于java的应用程序 如果您无法触及应用程序代码 并且应用程序
  • JQuery.ready 为时已晚:如何在渲染之前使用 JQuery 应用 CSS 值?

    我希望能够对某些元素应用不透明度以使它们不可见仅当启用 JavaScript 时 我不想使用display none因为我希望布局就像在 DOM 中一样 所以将不透明度设置为 0 是完美的 我希望能够使用 Javascript 使用 JQu
  • 从 DOxygen XML 输出中提取函数调用列表

    我发布了一个question https sourceforge net projects doxygen forums forum 130994 topic 3875842在 DOxygen 论坛上 也将其发布在这里以获得更好的回应 我有
  • 你们有 SQL 注入测试“Ammo”吗?

    当阅读有关 SQL 注入和 XSS 的内容时 我想知道你们是否有一个字符串可以用来识别这些漏洞和其他漏洞 可以放入网站数据库中的字符串 用于黑盒检查该字段是否安全 将对一些内部工具进行大型测试 粗略的例子 想知道你们是否知道更多 a 或 1
  • F# 中的“导入”相当于什么

    如何从 F 中的另一个文件导入函数 像你所做地import在Python中 我试过open using 没有任何效果 我看了官方文档 还是不明白如何使用 基本上 我想要这样的东西 Log fs module Log let log prin
  • 在 spring mvc log4j 中为每个日志消息添加字符串前缀

    我希望将我的字符串作为前缀添加到应用程序中的每个日志消息中 我的意思是 我有几个 java 应用程序 我希望其中一个在消息中具有一些前缀 例如 DATE INFO or other sample gt this is my added st
  • 在不同容器中渲染组件并共享状态

    我有一个由 WordPress 预渲染的 HTML 页面和三个 React 组件
  • 理解正则表达式 [\s\S-[<>]]*

    我有这个正则表达式 s S lt gt 你能帮我理解这个表达代表什么吗 据我所知 这意味着由空格和从非空格字符到 的范围组成的字符类 没有多大意义 Thanks 这是一个仅受少数正则表达式引擎 NET JGSoft XML Schema 和
  • 如何在laravel公共文件夹中安装wordpress

    我也点击此链接 但这不是我的解决方案 laravel 和 wordpress 在同一域中 laravel 在子文件夹中 https stackoverflow com questions 29018742 laravel and wordp
  • Gradle 子项目未包含在类路径中

    我们设置了 2 个项目 1 个主项目和 1 个子项目 它们是 Java 项目 它们都在同一个目录下 目录结构如下 dev Project A build gradle settings gradle Project B build grad
  • 如何每小时调用一次函数?另外,我怎样才能循环这个?

    我需要一种简单的方法来每 60 分钟调用一个函数 我怎样才能做到这一点 我正在制作一个 MineCraft bukkit 插件 这就是我所拥有的 package com webs playsoulcraft plazmotech java
  • 识别评论用户并发送通知 Laravel

    我有一个帖子系统 在我的网站上 用户可以发布文章并对每篇文章发表评论 我想发布 当任何用户 不是帖子的作者 评论帖子时 我需要向帖子的作者发送通知 该帖子由 UserName 评论 我这样做 在 CommentController 中 我有
  • 使用 HTTP 和 REGEX 清除 Varnish

    我想使用 HTTP 清除清漆中的元素 这个http调用是从varnish本身后面的后端服务器触发的 因此后端服务器除了HTTP之外没有其他访问权限 我已经使用相应的 ACL 实施了以下清除规则 该规则适用于 curl X PURGE htt
  • 在 git 中管理本地更改我不想提交

    所以我有一些已更改的文件版本 这些都是非常个人化的更改 例如 为 javascript 构建关闭缩小功能 我永远不会提交 但我确实想让它保持开放状态 以便根据其他人的更改进行更新 目前 每次更新工作区时我都必须进行堆栈保存 这变得非常烦人
  • 可启动和跨平台应用程序并使用delphi或Pascal

    是否可以使用 Delphi 或 Pascal 创建可启动 MBR 应用程序 应用程序 我知道我们不能使用 vcl RTL 和其他东西 因为它们依赖于操作系统 但我可以至少使用 Readln 和 writeln 吗 如果是真的的话 我们可以在
  • 如何暂停/恢复视频录制

    我想在录制视频时实现暂停 恢复功能 MediaRecorder 没有任何暂停 恢复方法 本机相机应用程序具有暂停 恢复功能 可以实施吗 请指导我 任何帮助或指导将不胜感激 None
  • Azure Pipeline 使用 YAML 触发 Pipeline

    当使用 YAML 完成另一个管道时尝试触发 Azure 管道 有文档 https github com microsoft azure pipelines yaml blob master design pipeline resources
  • Android ListView 有两个按钮设置可见性问题

    I have Drag Sort Listview https github com bauerca drag sort listview与以下项目 1 文本视图2 两个按钮 ON和OFF 一次只有一个按钮可见 关闭状态的图像 http p