如何创建包含不同元素和操作的列表?

2024-04-04

我想创建包含不同类型项目的列表。他们应该调用不同的意图或做其他事情(显示地图等)。它应该像联系方式一样。项目和操作的数量是预定义的。

如何优雅地达到这样的效果呢?我不需要确切的代码,但需要指导方针和信息。任何帮助将不胜感激 :)


UPDATE:

我所说的“这种效果”是指创建不同类型项目的列表(onClickListener、布局)。在上图中,您可以看到您的联系人有各种选项:打电话给某人、发电子邮件、聊天、查看谷歌地图等。所有这些选项都分组在列表中。

我想知道是否可以通过 xml 布局来实现而不需要定义自定义Adapter班级。我还希望能够添加一些静态标题行,例如。分类名称。


我认为实现这一目标的唯一方法是创建一个自定义适配器类。 我使用它来创建一个文件浏览器,根据所选项目是文件还是文件夹来执行不同的操作。

基本上,您需要创建一个扩展 ArrayAdapter 的自定义适配器(如果您的所有项目都继承自同一个类,则可以使用另一个基类)。这是一个示例代码:

public class MyCustomAdapter extends ArrayAdapter<Object> {


    public MyCustomAdapter(Context context, int textViewResourceId,
            ArrayList<Object> objects) {
        super(context, textViewResourceId, objects);
        mList = objects;
    }


    public View getView(int position, View convertView, ViewGroup parent) {
        Object obj = mList.get(position);
        View v = convertView;
        LayoutInflater vi = (LayoutInflater) mContext
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);


        if (obj.getClass().isAssignableFrom(MyClass1.class)){
            v = vi.inflate(R.layout.myclass1_item_layout, null);
            setupViewClass1(obj,v);
        } else if (obj.getClass().isAssignableFrom(MyClass2.class)){
            v = vi.inflate(R.layout.myclass2_item_layout, null);
            setupViewClass2(obj,v);
        }

        return v;
    }

    private void setupViewClass1 (Object obj, View v){  
        // setup the content of your view (labels, images, ...)
    }

    private void setupViewClass2 (Object obj, View v){  
        // setup the content of your view (labels, images, ...)
    }

    private ArrayList<Object> mList;

}

然后,您需要添加 OnItemClickListener 以及 OnCreateContextMenuListener 来处理列表上的单击和长按事件,再次对对象的类进行过滤。

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

如何创建包含不同元素和操作的列表? 的相关文章

  • 当活动被破坏时如何保存状态

    public class Talk extends Activity private ProgressDialog progDialog int typeBar TextView text1 EditText edit Button res
  • Google Drive REST API 是否仍需要 GET_ACCOUNTS 权限?

    Google 已弃用 Google Drive Android API 我们正在迁移到 Google Drive REST API v3 2年前 我们有使用Google Drive REST API v2 的经验 我们知道GET ACCOU
  • 如何使全屏覆盖在方向更改后保持全屏?

    我正在制作一个应用程序 它可以创建在屏幕上行走的微小精灵动画 我有一个主要活动 带有 启动服务 按钮 这会启动一个服务 该服务 在onCreate 创建一个全屏视图并将其附加到根窗口管理器 这部分工作完美 它充满了屏幕 您可以离开应用程序
  • 处理 SavedInstances 并恢复活动

    基本上我的应用程序有 2 个活动 说 A 和 B A 启动 B Activity B 播放音乐并且还有通知 情况 1 当视图仍在活动 B 上时 我按主页按钮 然后单击通知 活动 B 将打开 其视图完好无损并播放音乐 因为在清单中我使用 an
  • Android 软键盘 - 禁用某些键

    我正在寻找一种使用内置软键盘并禁用某些键的方法 例如 如果用户不应该使用字母 f 因为在列表中该字母不存在 则该键应显示为灰色 想象一下 用户可以在文本框中键入文本以从列表中进行选择 该列表包含 ABC BCCD 床 如果用户输入 A 然后
  • Android:将图像裁剪为特定尺寸

    我的目的是让用户从图库中选择一张图像 然后进行裁剪活动 但是 我需要将定义裁剪蒙版的矩形锁定到某个尺寸 然后用户只需重新定位它即可显示图像的一部分 关于如何做到这一点有什么想法吗 Thanks T Intent intent new Int
  • 通过模拟器控制台或 ADB 更改 Android 模拟器方向

    我正在尝试构建一个自动化测试框架 用于检查应用程序应该响应的基本内容 而不会崩溃 其中之一是检查应用程序是否正确响应配置更改 现在 由于它是自动化的 我必须以编程方式在横向和纵向之间切换模拟器的方向 并观察它是否崩溃 大写 因为有很多与 c
  • Android 中是否可以使用滑动视图导航的刻度线?

    我想在 Android 应用程序中创建一组页面 这些页面可以水平滑动并使用刻度线来指示当前页面在我拥有的 12 个页面集中的位置 Android 设计文档中提到了像这样使用刻度线的设计模式 http developer android co
  • NDK8d 未找到 std::string 操作(即 stol、stoi)

    我尝试使用 ndk r8d 和 c 11 支持来建立我的第一个 android 项目 一些 c 11 机制工作正常 即 lambda 表达式 但是当我尝试时 使用新的字符串操作之一 编译失败 错误 stol 不是 std 的成员 这是我的
  • RecyclerView 单击将数据传递到新活动

    我正在制作一个包含三个选项卡的应用程序 每个选项卡都有一个带有两个文本的 recyclerview 我希望用户能够单击任何 recyclerview 项目 并且该项目中的文本应传递到新活动 这是应用程序外观的图像 https i stack
  • 如何去掉android状态栏的电池图标?

    我通过去掉背景图像来删除 Android 中显示网络 电池和时间信息的状态栏 但图标仍然存在 我也想知道如何删除电池图标 不是用于应用程序 而是用于框架开发 提前致谢 你试过打电话吗 getWindow setFlags WindowMan
  • 绘制平滑曲线

    我想创建更平滑的曲线 而不仅仅是线角 这是我现在画的图 这是我的代码 case FREEHAND float pts float ptk ptk new float 2 imageMatrix invert inv if mCurrentS
  • 作为 ViewPager 的一部分更新 ListFragment 中的数据

    我在 Android 中使用 v4 兼容性 ViewPager 我的 FragmentActivity 有一堆数据 这些数据将以不同的方式显示在我的 ViewPager 的不同页面上 到目前为止 我只有同一个 ListFragment 的
  • Firebase 身份验证中是否需要 SMS Retriever API 才能进行 otp 自动填充?

    我在用Firebase auth api验证用户电话号码 目前 就我而言 我有一个屏幕 用户在其中输入电话号码 并在第二个屏幕上输入密码 根据文档firebase大多数时候自动检索 OTP 并启动验证过程 所以我的问题是它已经实现了SMS
  • 将 style="?android:attr/buttonBarStyle" 设置为父布局并将 style="?android:attr/buttonBarButtonStyle" 设置为按钮使它们不可见

    我按照Android推荐并设置style android attr buttonBarStyle 到父布局和style android attr buttonBarButtonStyle 到按钮 所以现在我的布局是这样的
  • Firebase:用户注册后如何进行电话号码验证?

    所以我知道我可以使用电子邮件验证或电话号码验证 但我想做的是在用户注册或登录后进行电话号码验证 如何连接这两种身份验证方法 最后 Firebase中是否有一个函数可以检查用户是否通过电话号码验证 谢谢 即使用户已通过身份验证 您仍然可以使用
  • 永久删除Android文件

    我发现了一个名为这会从 Android 设备中永久删除文件和文件夹 以便删除的文件无法再恢复 这是我正在谈论的应用程序 但我想知道如何做到这一点 我知道它是用 android studio 制作的 i尝试了常规的删除方式file delet
  • 从 Dropbox 下载文件并将其保存到 SDCARD

    现在我真的很沮丧 我想从 Dropbox 下载一个文件并将该文件保存到 SD 卡中 我得到的代码为 private boolean downloadDropboxFile String dbPath File localFile throw
  • 连接到具有相同 SSID 的最强接入点(信号最强的接入点)

    我正在编写一个程序来始终连接到最强的接入点 我的意思是信号最强的接入点 首先 我扫描所有可用的 WiFi 网络 然后限制它们仅查看具有相同 SSID 的网络 这样我就可以看到一个网络的所有AP 当我连接到该网络时 它没有连接到最强的信号 但
  • (Unity 中的 Firebase 数据库)在 Android 构建期间在 Temp 中缺少classes.jar

    I am using Firebase Database in my Unity project but I am having some issues when building the project for android It ru

随机推荐

  • Python - 将 set-cookies 响应转换为 cookie 字典

    如何转换response set cookie 输出字符串来自httplib2回应像 cookie1 xxxyyyzzz Path Expires Wed 03 Feb 2015 08 03 12 GMT Secure HttpOnly c
  • GLUT 退出重新定义错误

    在我的简单 OpenGL 程序中 我收到以下有关退出重新定义的错误 1 gt c program files microsoft visual studio 8 vc include stdlib h 406 error C2381 exi
  • Android Studio 3 库模块和功能模块的区别

    Android Studio 3 中至少有两种新的模块类型 首先是Instant app module第二个是feature module With Instant App module这是很明显的但是feature module从我的角度
  • arrayWillChange 中“无法调用未定义的‘销毁’方法”

    我有一个非常标准的数组 模板关系设置 但是当我将一个新项目推入数组时 我得到了上面提到的内容Cannot call method destroy of undefined错误在arrayWillChangeEmber源码的方法 for id
  • 将格式化日期转换回unix

    我将使用哪个函数将自定义格式的日期转换回 Unix 纪元时间 例如 Ymd gt U 我在看date U strtotime 20140525 但我不确定如何适应原始格式Ymd 该函数如何知道输入格式是 YYYYMMDD 因为它看起来有效
  • 如何将 Haskell 转换为 F#?

    我正在尝试通过翻译我很久以前编写的一些 Haskell 代码来学习 F 但我陷入了困境 percent Int gt Int gt Float percent a b fromInt a fromInt b 100 freqs String
  • 跨多个线程的 Java 日志记录

    我们有一个使用线程的系统 以便它可以同时并行处理不同的功能 我们希望找到一种方法将特定 事务 的所有日志条目绑定在一起 通常 人们可能会使用 threadName 将它们收集在一起 但显然这在多线程情况下会失败 如果没有通过每个方法调用传递
  • 使用 C++ 登录到 Windows 上的事件查看器 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想在我的 C 应用程序上使用日志 但是 我想使用 Windows 10 事件查看器 而不是文本文件 我
  • 如何将“捐赠”按钮集成到印度的网站中?

    我们正在为印度的慈善信托基金开发一个网站 为此 我们需要在网站上添加一个 捐赠 按钮 供任何想要通过支付网关向慈善机构捐赠的人使用 然而 Paypal 和 Google Wallet Google Checkout 都限制在印度使用 捐赠
  • 杰克逊:将对象视为原始对象

    我有一门或多或少是围绕双精度型的包装类 当我通过 Jackson 序列化我的类时 我将收到类似以下内容的信息 value 123 0 我基本上希望发生的是 杰克逊只给我 123 0 0 如果我可以扩展 Number 我的问题就会得到解决 但
  • 用每列的组平均值填充 NaN [重复]

    这个问题在这里已经有答案了 我知道fillna 方法可用于在整个数据框中填充 NaN df fillna df mean fill with mean of column 如何将平均值计算限制为 NaN 所在的组 和列 Exemple im
  • ng-if="true" + data-ng-if="true" 计算结果为 false?

    事实是 如果你使用ng if truthyValue and data ng if truthyValue 里面一个html元素使用角JS 1 6 受影响的元素不会在DOM 即使您使用 这也是如此ng if and data ng if与b
  • ActionScript 的 File.upload 不适用于 iOS 设备的 Air SDK

    我尝试使用 ActionScript 的 File upload 在 Air SDK for iOS 环境中上传文件 但 File upload 无法正常工作 调用 File upload 后 不会执行有关文件上传的处理程序 也不会捕获任何
  • Node.js 12 的 TypeScript tsconfig 设置?

    最佳的 TypeScript 是什么tsconfig用于输出将在 Node js 12 上运行的代码的设置 从 Node js 开始12 0 0 100 支持ES2019 如果您知道您的目标是该版本或更高版本 则最佳配置将如下所示 modu
  • 为什么 TypeScript 中受保护的成员可以被公共成员覆盖?

    我是 Typescript 的新手 我尝试在本文中使用 TypeScript 进行一些尝试操场 http www typescriptlang org play 我注意到在 TypeScript 中 基类中的受保护成员可以被公共成员覆盖 c
  • 如何创建 pip 可安装项目?

    如何创建 pip 可安装项目 如何注册 pip 所有项目都应该具有哪些元数据配置 以便允许集成和轻松导入 或者 如果你感觉很奇特 阅读 lazy sudo easy install PasteScript paster create myn
  • 实体框架 4 Visual Studio 2008

    我一直在四处寻找并试图查看 Entity Framework 4 是否可以在 Visual Studio 2008 下运行 但找不到任何对它的引用 可以让 EF4 在 VS2008 上运行吗 On the ADO NET 实体框架团队博客
  • 动画同步、光标和突出显示

    所以我几乎有了我的code http jsfiddle net bplumb PBFWV 9 按照我想要的方式工作 但无法让我的动画正确同步 我正在尝试对光标进行动画突出显示文本 然后单击按钮 问题是光标要么太慢 要么太快 我正在尝试做这个
  • C 语言快速联合实现中的分段错误(核心转储)

    include
  • 如何创建包含不同元素和操作的列表?

    我想创建包含不同类型项目的列表 他们应该调用不同的意图或做其他事情 显示地图等 它应该像联系方式一样 项目和操作的数量是预定义的 如何优雅地达到这样的效果呢 我不需要确切的代码 但需要指导方针和信息 任何帮助将不胜感激 UPDATE 我所说