howill2021 发表于 2024-1-15 23:22:57

求助自定义表格如何选中项目



上图为手动点击时候的效果,使用【选中项目】【置被选择项目】都无法达到选中效果
求助如何通过代码达到选中上图的效果呢

下面代码是个简单的示例
<火山程序 类型 = "通常" 版本 = 1 />

类 启动类 <公开 基础类 = 安卓5白色窗口>
{
    变量 自定义表格1 <类型 = 自定义表格 注释 = "" 注释 = "" 注释 = "" 注释 = "" 注释 = "" 注释 = "" 隐藏值属性 = "0"
            @安卓.窗口.布局 = "p_layout_height_type = wrap_content\np_layout_width_type = match_parent" 列数 = 3
            需求水平间距 = 20 垂直间距 = 20 选中模式 = 允许单选 图像选择器 = "bj.xml">
    变量 按钮1 <类型 = 按钮 隐藏值属性 = "0" @安卓.窗口.布局 = "ctrl_order = 1">
    变量 按钮2 <类型 = 按钮 隐藏值属性 = "0" @安卓.窗口.布局 = "ctrl_order = 2">

    方法 通知_被创建 <公开 注释 = "当窗口被创建后本方法被调用" 注释 = "本方法被调用后将紧跟着调用\"通知_被启动\"方法" 折叠 折叠2 @虚拟方法 = 可覆盖>
    参数 启动信息对象 <类型 = 启动信息类 注释 = "提供载入本窗口时所传递过来的启动信息,必定不为空对象.">
    参数 载入参数 <类型 = "对象类 []" 注释 = "提供载入本窗口时所传递过来的所有参数(\"载入窗口2\"方法传递)"
            注释 = "注意: 载入本窗口时所传递过来的所有基本数据类型参数均已经被自动转换为对应的" 注释 = "封装类对象,所以取用时需要使用对象类的对应\"对象到xxx\"方法将其转换回去.">
    参数 参数数目 <类型 = 整数 注释 = "提供\"载入参数\"数组的成员数目,如果为0,则\"载入参数\"可能为空对象.">
    {
      父对象.通知_被创建 (启动信息对象, 载入参数, 参数数目)// 调用基础类中的被覆盖虚拟方法

      计次循环 (10)
      {
            变量 项目数据 <类型 = 文本型>
            项目数据 = "项目:" + 到文本 (取循环索引 ())
            自定义表格1.适配器.插入项目 (文本到对象 (项目数据), , 真)

      }

    }

    方法 自定义表格_取对象项目视图 <接收事件 类型 = 整数 注释 = "用户必须处理该事件以获得对应当前表格单元项的显示视图" 折叠>
    参数 来源对象 <类型 = 自定义表格 注释 = "提供事件产生的具体来源对象">
    参数 标记值 <类型 = 整数 注释 = "用户调用\"挂接事件\"命令时所提供的\"标记值\"参数值,非此方式挂接事件则本参数值固定为0.">
    参数 项目信息 <类型 = 对象数据适配信息>
    {
      变量 test1 <类型 = test>
      变量 布局1 <参考 类型 = 线性布局器>
      布局1 = test1.创建布局 (本对象, , 项目信息.项目数据对象, )
      项目信息.所返回组件 = 布局1
      返回 (0)
    }

    方法 按钮_被单击 <接收事件 类型 = 整数 注释 = "用户在组件上单击事件" 注释 = "注意:"
            注释 = "1. \"按钮\"类别及\"图片按钮\"组件会自动初始设置\"支持单击\"属性为真,不需要单独设置;"
            注释 = "2. 除开上述类别组件外,必须将组件的\"支持单击\"属性设置为真才会发送本事件." 折叠2>
    参数 来源对象 <类型 = 按钮 注释 = "提供事件产生的具体来源对象">
    参数 标记值 <类型 = 整数 注释 = "用户调用\"挂接事件\"命令时所提供的\"标记值\"参数值,非此方式挂接事件则本参数值固定为0.">
    {
      如果 (来源对象 == 按钮1)
      {
            自定义表格1.选中项目 (3, 真)
      }
      否则 (来源对象 == 按钮2)
      {
            自定义表格1.置被选择项目 (3)
      }
      返回 (0)
    }
}

类 test <基础类 = 组件布局类>
{
    变量 文本框1 <类型 = 文本框>

    方法 通知_初始化 <公开 注释 = "当本类中所设计的布局已经创建内容完毕(线性布局器窗口组件,可以通过读取\"布局内容\"属性获取),"
            注释 = "本通知被发送. 如果创建布局时指定了所需要加入的容器组件(即使用\"窗口容器组件.加入子布局\"或" 注释 = "\"帧布局器.置布局\"方法创建),则本通知发送时已经加入完毕."
            注释 = "用户可以在本通知中进行一些初始化操作." 折叠2 @虚拟方法 = 可覆盖>
    参数 所加入到的容器组件 <类型 = 窗口容器组件 注释 = "提供本类布局内容已经被加入到的容器组件,如未提供(即不为使用\"窗口容器组件.加入子布局\"或"
            注释 = "\"帧布局器.置布局\"方法创建)则为空对象." 折叠>
    参数 用户对象1 <类型 = 对象类 注释 = "为调用\"本类.创建布局\"/\"窗口容器组件.加入子布局\"/\"帧布局器.置布局\"方法时所提供的" 注释 = "\"用户对象1\"参数值">
    参数 用户对象2 <类型 = 对象类 注释 = "为调用\"本类.创建布局\"/\"窗口容器组件.加入子布局\"/\"帧布局器.置布局\"方法时所提供的" 注释 = "\"用户对象2\"参数值">
    {
      父对象.通知_初始化 (所加入到的容器组件, 用户对象1, 用户对象2)// 调用基础类中的被覆盖虚拟方法
      文本框1.内容 = 对象到文本 (用户对象1)
    }
}


创世魂 发表于 2024-1-16 00:00:11

https://bbs.voldp.com/thread-16515-1-1.html参考自定义列表框代码。

改成自定义表格就行了。因为两个组件的原理是一样的。只是自定义表格增加了 一个列数的概念。

howill2021 发表于 2024-1-16 13:15:58

本帖最后由 howill2021 于 2024-1-16 13:26 编辑

创世魂 发表于 2024-1-16 00:00
https://bbs.voldp.com/thread-16515-1-1.html参考自定义列表框代码。

改成自定义表格就行了。因为两个 ...
自定义列表没有列,达不到需求
因为有列数需求才选择的自定义表格哈,有列的其他列表组件也可以,只要能通过代码实现选中效果,但是不知道有没有可替代的{:3_58:}

howill2021 发表于 2024-1-16 19:13:13

创世魂 发表于 2024-1-16 00:00
https://bbs.voldp.com/thread-16515-1-1.html参考自定义列表框代码。

改成自定义表格就行了。因为两个 ...

魂总,当前调用:自定义表格1.选中项目 (3, 真),可以选中,但是不能触发选中效果(图像选择器设置的背景效果),可有什么解决方案呢
页: [1]
查看完整版本: 求助自定义表格如何选中项目