Android ListView 复选框选择

2024-06-24

我在这里有一个由两部分组成的问题。

1)如何填充我的ListView以便显示字符串,但是当选择项目时,不可见的id值(来自手机联系人的联系人id)是实际使用的值?

2)我有一个使用 multipleChoice 模式进行项目选择的 ListView。它填充了我的联系人列表中的姓名。当我在 ListView 中选择一个项目时,我希望该所选项目触发对 SqLite 例程的调用,以将值存储到数据库记录中。当在列表视图中选中某个项目时,如何触发此事件?

这是我的布局 XML;

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

<ListView
    android:id="@+id/lvContacts"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:choiceMode="multipleChoice"
/>

</LinearLayout>

这是我用来填充 ListView 的代码;

    private void fillData() {
    final ArrayList<String> contacts = new ArrayList<String>();

    // Let's set our local variable to a reference to our listview control
    // in the view.
    lvContacts = (ListView) findViewById(R.id.lvContacts);

    String[] proj_2 = new String[] {Data._ID, Phone.DISPLAY_NAME, CommonDataKinds.Phone.TYPE};
    cursor = managedQuery(Phone.CONTENT_URI, proj_2, null, null, null);
    while(cursor.moveToNext()) {
        // Only add contacts that have mobile number entries
        if ( cursor.getInt(2) == Phone.TYPE_MOBILE ) {
            String name = cursor.getString(1);
            contacts.add(name);
        }
    }

    // Make the array adapter for the listview.
    final ArrayAdapter<String> aa;
    aa = new ArrayAdapter<String>(this,
                                  android.R.layout.simple_list_item_multiple_choice,
                                  contacts);

    // Let's sort our resulting data alphabetically.
    aa.sort(new Comparator<String>() {
        public int compare(String object1, String object2) {
            return object1.compareTo(object2);
        };
    });

    // Give the list of contacts over to the list view now.
    lvContacts.setAdapter(aa);
}

我本来希望能够对每个选中的项目使用类似 onClick 事件的东西,但没有取得任何进展。

任何帮助将非常感激。谢谢。


我认为您问题的解决方案是使用自定义列表适配器,其中每个项目都包含联系人姓名和联系人 ID,详细信息如下:

1)尝试创建自定义联系人项目bean,包括2个属性:contactID、contactName

public class contactItem{
    private long contactID;
    private String contactName;

    //...
}

创建自定义联系人适配器:

public class CustomContactAdapter extends ArrayAdapter<contactItem>{

    ArrayList<contactItem> itemList = null;

    //Constructor
    public CustomContactAdapter (Context context, int MessagewResourceId,
            ArrayList<contactItem> objects, Handler handler) {
        //Save objects and get LayoutInflater
        itemList = objects;
    }


    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View view = convertView;
        final ReceiveMailStruct contact= items.get(position);

        if (contact!= null) {
            view = inflater.inflate(R.layout.layout_display_contact_item, null);
                        //Set view for contact here
         }
    }

}

搜索自定义适配器以获取更多信息

2)要处理 ListView 上的单击事件,您必须为 listitem 注册一个处理程序: 步骤1:将处理程序注册到列表项:

lvContacts.setOnItemClickListener(new HandlerListClickEvent());

Step2:点击项目时执行处理(选中/取消选中)

class HandlerListClickEvent implements OnItemClickListener {
    public void onItemClick( AdapterView<?> adapter, View view, int position, long id ) {
    //Get contact ID here base on item position
}

希望有帮助, 问候,

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

Android ListView 复选框选择 的相关文章

  • Android 显示自定义类型的联系人

    我已经导入了联系人列表的样本 形成此链接 http developer android com training contacts provider display contact badge html http developer and
  • 如何在 Android 中获取 SD 卡上文件夹的大小?

    是否可以轻松获取SD卡上文件夹的大小 我使用文件夹来缓存图像 并希望显示所有缓存图像的总大小 除了迭代每个文件之外 还有其他方法吗 它们都位于同一个文件夹中 只需浏览所有文件并将它们的长度相加即可 Return the size of a
  • Android 使用带有空格的键访问 Firebase

    这可能是一个愚蠢的问题 但我在谷歌的 firebase 网站上找不到任何示例 如果我在 firebase 数据库中有一个密钥 First Name 然后我打电话 FirstNameClass firstName dataSnapshot g
  • CollapsingToolbarLayout 无法识别滚动 fling

    我创建了一个简单的折叠工具栏布局它就像一个魅力 我的问题是 如果我尝试在嵌套滚动视图 当我松开手指时它就会停止 正常的滚动就像它应该的那样工作 我的活动代码是不变 gt 自动生成空活动 我只是单击了 android studio 中的 创建
  • ALBUM_ART列从API 29等开始被弃用,如何获取路径?

    我们目前正在使用以下方式获取专辑封面的路径 MediaStore Audio AlbumColumns ALBUM ART 并且正在成功获取路径 但 Pixel 3a Android 10 除外 经过一番研究 API 29 及以上版本已弃用
  • Android - 缩放和压缩位图

    我正在开发一个 Android 应用程序 它具有相机捕捉和照片上传功能 如果设备具有高分辨率相机 则捕获的图像尺寸将非常大 1 3MB或更大 由于应用程序需要将此图像上传到服务器 因此我需要在上传之前压缩图像 例如 如果相机拍摄了 1920
  • 将长文本分成页面供viewpager使用

    我正在实施中的messureText方法这个问题 https stackoverflow com a 22199847 3930169在 viewpager 中渲染之前将长文本分成指定大小的页面 我正在使用增量字符数进行 while 循环以
  • 尝试在空对象引用上调用接口方法“...”

    我正在开发一个具有蓝牙功能的应用程序 我使用片段来扫描并列出蓝牙设备 单击时 会回调提供所选蓝牙设备的主要活动 我从使用 Android 6 API 23 的智能手机开始 然后必须调整代码以用于 Android 5 0 API 21 我刚刚
  • Lombok 如何将代码生成到现有类中? [复制]

    这个问题在这里已经有答案了 我可以使用注释处理器从头开始生成类 但我无法像 lombok 那样修改类 我在 android studio 中搜索了 lombok 生成的类 但是我什么也没找到 然后我通过他们的网站检查了龙目岛概述 还在论坛中
  • SQLite CursorWindow 限制 - 如何避免崩溃

    我必须执行查询并将结果存储在列表中 我使用的函数如下 List
  • 将 Dagger 与 Espresso 一起使用

    我计划在我的应用程序多模块上创建 Espresso 测试 并且我即将创建第一个 Espresso 测试 但我看到的是 在我的应用程序上我没有AppComponent我可以在哪里伪造它 由于我想在我的功能模块上添加测试 我将创建TestApp
  • 如何在 Android (Xamarin) 中以编程方式从当前主题获取颜色

    我需要以编程方式获取一些默认主题颜色值 例如 windowBackground colorPrimary 我正在执行活动中的代码 我的目标安卓API 为 21 我正在使用一个Theme Material theme 我试过了 var att
  • android项目中视频文件放在哪里

    我有一个视频 我需要知道放置在哪里以及如何获取该视频的路径 我知道如何从 URL 添加视频 Uri uri Uri parse www abc com myVid mp4 videoView VideoView findViewById R
  • RecyclerView:调整项目大小的动画

    我有一个RecyclerView 回收者视图的每个项目都可以展开或不展开 同一时间只能展开一项 本质上 我试图在棒棒糖拨号器中重新创建历史列表 我发现在 RecyclerView 上使用 LayoutTransition https sta
  • ImageView adjustViewBounds 不适用于相对布局

    我有一个ImageView并已设置其layout height为 100dp 其layout width为 wrap content 使用的绘图具有更大的实际尺寸 为 130dp 宽度 X 215dp 高度 当 的时候ImageView被放
  • Android 位图内存问题 - 错误:8294416 字节分配内存不足

    我目前正在开发一个讲述故事的应用程序 该故事包含 场景 其中包含通过 ImageView 显示的多个 JPEG 和 PNG 文件 我创建 ImageView 并通过以下函数将其添加到布局中 private ImageView newImag
  • 设置android中按钮的透明度

    我想在android中制作具有不同透明度级别的按钮 我使用过 android color transparent 但它使按钮 100 透明 我需要一个 70 透明的按钮 这是我正在处理的 XML 代码
  • DDMS 未显示来自设备的线程

    我想使用以下命令检查我的 Android 应用程序中是否存在内存泄漏DDMS特色于Eclipse 当我启动模拟设备时 线程会正确显示模拟设备 从 8600 及更高版本开始 然而 当我将 Droid 连接到 PC 时 该设备在 DDMS 中显
  • 将我的应用程序添加到“添加快捷方式”列表,以便在主屏幕上有快捷方式

    如您所知 当您长按主屏幕时 手机会显示列表菜单 您可以添加快捷方式 小部件 文件夹等 我希望我的应用程序位于快捷方式列表中 我怎样才能做到这一点 快捷方式自 API 级别 1 起就已存在 并且也可由 3rd 方应用程序使用 要将活动添加到快
  • Ionic 3 Deeplinking - 从 URL 启动应用程序

    我正在使用 Ionic 开发一个跨平台应用程序 当尝试实现深度链接时 我安装了一个名为 Ionic Native 插件深层链接 我运行了这些命令 ionic cordova plugin add ionic plugin deeplinks

随机推荐

  • 如何在自定义 Presto 聚合函数中强制执行排序 (ORDER BY)

    我正在编写一个自定义 Presto 聚合函数 当 且仅当 值按我聚合的值按升序排序时 它会生成正确的结果 IE 以下将起作用 SELECT key MY AGG FUNC value ORDER BY value ASC FROM my t
  • 将子进程的输出重定向到父进程 - Powershell

    我有 powershell 进程 并且我正在调用 Start Process 或 System Diagnostic Process 以作为不同用户启动子进程 以获取其他用户环境变量 我尝试使用重定向输出 但它不起作用 下面是代码 proc
  • ReactJS - 监视访问令牌过期

    在我的应用程序中 我有一个访问令牌 Spotify 的 该令牌必须始终有效 当此访问令牌过期时 应用程序必须每 60 分钟访问刷新令牌端点并获取另一个访问令牌 授权功能 出于安全原因 这两个电话 get token and refresh
  • Twilio:通过 API 更新语音(或消息)URL?

    我已经使用 Twilio 一段时间了 认为它是一项出色的服务 并且希望使用 Twilio 为我的家庭自动化服务器 一台旧的 mac mini 提供文本 语音功能 问题是 如果我的家庭 IP 地址发生变化 那么我的 Twilio 号码的 SM
  • 根据 Woocommerce 中的用户输入自定义购物车商品价格

    在我们的 Woocommerce 商店中 我们对任何产品都有一些最低价格 每个产品内页都有两个字段 客户可以在其中输入产品的宽度 高度 然后他们可以将该产品添加到购物车 然后价格根据给定的宽度和高度进行更改 例如 如果产品的最低价格是50
  • Scala / PowerMockito - Java 最终类在使用 Powermockito 的 Scala 测试中导致构建错误

    我有最后一堂课 public final class AClass private final AConfig aClassConfig public final static BeanName aClass 我试图在测试中模拟它 RunW
  • 如何从 .ps1 文件运行 powershell 脚本?

    我正在尝试自动执行一个简单的 PS 脚本 以删除某个 txt 文件 显然 我是 powershell 新手 当我在 shell 中运行代码时 它工作完美 但是当我将代码保存为 ps1 并双击它 或远程执行它 时 它只是弹出一个窗口 什么也不
  • Azure 表中查询结果大小的限制是多少?

    我想知道Azure表存储中查询结果的大小是否有限制 例如如果我查询一个分区并且它包含很多记录 有什么问题吗 1000 个实体是单个查询事务中返回的最大值 之后服务将返回一个继续令牌 请参阅文档查询实体 https msdn microsof
  • Django 表单在表单字段后添加

    以下是我的表单代码 class FMessage forms Form From forms CharField To forms CharField Subject forms CharField Message forms CharFi
  • 错误:java:无法运行程序CreateProcess error=2,系统找不到指定的文件

    Error java Cannot run program C Program Files Java jdk1 7 0 45 bin java in directory C Users navya chamidisetty IntelliJ
  • 删除打印为 PDF 的选项

    当单击 Crystal 报告的打印按钮时 我看到以下内容 我不想先导出为 PDF 我只想在按下 打印 按钮时立即打印 我该如何配置此行为 听起来你想使用PrintToPrinter方法 根据 MSDN 将报表的指定页面打印到使用 Print
  • Prolog — 对称谓词

    我必须在序言中模拟家谱 我有对称谓词的问题 Facts parent x y male x female y age x number Rules blood relation让我头疼 这就是我所做的 blood relation X Y
  • Qt 覆盖小部件快捷方式(窗口快捷方式)

    我有一个 Qt 应用程序 其中在 Qt Designer 表单操作中定义了多个窗口快捷方式 这些快捷键效果很好 直到焦点位于处理相同组合的小部件上 覆盖我的窗口快捷键 时按下它们 我想要相反的行为 窗口快捷方式覆盖聚焦的小部件快捷方式 我尝
  • 如何将oracle中的number(7,2)更改为varchar?

    I m using Oracle 10g I want to append to all values in sal column To acomplish this first I m trying to change data type
  • Boost:bjam 如何构建库名称?

    我在查看 jam 文件 了解库的名称是如何构造的 例子 libboost log mgw46 mt 1 48 dll 我想忽略最后一部分 即如何使用我构造的名称传递链接器 o 参数 我的版本很少 并且在一个大项目中链接迫使我对项目文件进行更
  • 从 aws Glue 脚本调用存储过程

    ETL 作业完成后 在 AWS Glue 脚本中调用存储过程的最佳方式是什么 我正在使用 PySpark 从 S3 获取数据并将其存储在临时表中 在这个过程之后 需要调用一个存储过程 该存储过程将数据从临时表加载到相应的 MDS 表中 如果
  • Firebase Cloud Function:multipart/form-data 出现“意外的表单结束”错误

    我正在尝试在我的 Cloud Function Express 应用程序上创建文件上传路由 我尝试过不同的模块 例如formidable multer and busboy 但是在使用 firebase 模拟器运行服务器时 没有一个可以逃脱
  • J=1 且 W=Majority 的 MongoDB 副本集上是否仍会发生回滚?

    我一直在阅读文档 根据我的理解 我可以看到仍然可能发生回滚的情况 写入到主数据库 确认日志已写入磁盘 大多数辅助节点确认写入但不写入磁盘 整个集群断电 当电源恢复时 主设备由于某种原因无法启动备份 次要角色扮演主要角色 最初的主节点最终启动
  • MySQL 转储 CronJob

    我正在尝试创建一个 cron 来每天备份我的 MySQL 从站 backup sh内容 bin bash Backup mysql from slave sudo mysql u root p xxxxx e STOP SLAVE SQL
  • Android ListView 复选框选择

    我在这里有一个由两部分组成的问题 1 如何填充我的ListView以便显示字符串 但是当选择项目时 不可见的id值 来自手机联系人的联系人id 是实际使用的值 2 我有一个使用 multipleChoice 模式进行项目选择的 ListVi