新的可扩展列表视图高度可定制

2023-12-12

I need to realize something like that in the picture: enter image description here "TITLE" rectangle makes a list of object and when I click on one of these objects is opened a "sub menu" (where there are ELEMENT #1, 2 etc.). The system is similar to a expandable listview, but more customizable.

您建议如何实现这一点? 如何为子菜单的折叠制作动画?如果我将子菜单设置为“消失”,然后当 onClick 标题时,我将其设置为“visibility=visible”,突然出现...我想要一些 Android 风格的动画。

你有什么建议?我正在考虑实现一个对象来实例化每次我需要实现类似的东西。


                    CustomListViewDemo.java 

public class CustomListViewDemo extends ListActivity {
  private EfficientAdapter adap;

  private static String[] data = new String[] { "0", "1", "2", "3", "4" };

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.main);
    adap = new EfficientAdapter(this);
    setListAdapter(adap);
  }

  @Override
  protected void onListItemClick(ListView l, View v, int position, long id) {
    // TODO Auto-generated method stub
    super.onListItemClick(l, v, position, id);
    Toast.makeText(this, "Click-" + String.valueOf(position), Toast.LENGTH_SHORT).show();
  }

  public static class EfficientAdapter extends BaseAdapter implements Filterable {
    private LayoutInflater mInflater;
    private Bitmap mIcon1;
    private Context context;
    int firstpos=0;

    public EfficientAdapter(Context context) {
      // Cache the LayoutInflate to avoid asking for a new one each time.
      mInflater = LayoutInflater.from(context);
      this.context = context;
    }

    public View getView(final int position, View convertView, ViewGroup parent) {

      ViewHolder holder;

      if (convertView == null) {
        convertView = mInflater.inflate(R.layout.adaptor_content, null);

        holder = new ViewHolder();
        holder.sp = (Spinner) convertView.findViewById(R.id.spinner1);

        holder.ArrayAdapter_sp = new ArrayAdapter(parent.getContext(),android.R.layout.simple_spinner_item,data);
        holder.ArrayAdapter_sp.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        holder.sp.setAdapter( holder.ArrayAdapter_sp);
        holder.sp.setOnItemSelectedListener(new OnItemSelectedListener()
        {
            private int pos = position;
            @Override
            public void onItemSelected(AdapterView<?> arg0, View arg1,
                    int p, long arg3) 
            {
                // TODO Auto-generated method stub
                 Toast.makeText(context, "select spinner " + String.valueOf(pos)+" with value ID "+p, Toast.LENGTH_SHORT).show();    

            }

            @Override
            public void onNothingSelected(AdapterView<?> arg0)
            {
                // TODO Auto-generated method stub

            }
        });




        convertView.setTag(holder);
      } else {

        holder = (ViewHolder) convertView.getTag();
      }


      return convertView;
    }

    static class ViewHolder 
    {

        Spinner sp;
        ArrayAdapter ArrayAdapter_sp;

    }

    @Override
    public Filter getFilter() {
      // TODO Auto-generated method stub
      return null;
    }

    @Override
    public long getItemId(int position) {
      // TODO Auto-generated method stub
      return 0;
    }

    @Override
    public int getCount() {
      // TODO Auto-generated method stub
      return data.length;
    }

    @Override
    public Object getItem(int position) {
      // TODO Auto-generated method stub
      return data[position];
    }

  }

}

----------------------------------------------------------------------------------
                        adaptor_content.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/lineItem"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center_vertical" >

    <Spinner
        android:id="@+id/spinner1"
        android:layout_width="314dp"
        android:layout_height="wrap_content" />

</LinearLayout>


--------------------------------------------------------------------------
                        main.xml

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="fill_parent" android:layout_width="fill_parent"
    >

    <ListView
        android:id="@+id/android:list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_marginBottom="60dip"
        android:layout_marginTop="10dip"
        android:cacheColorHint="#00000000"
        android:drawSelectorOnTop="false" />

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

新的可扩展列表视图高度可定制 的相关文章

  • android中向sqlite中插入大量数据

    目前 我必须一次向我的 Android 中插入超过 100 亿条数据 然而 内存不足的问题会使程序崩溃 sqlite 插入测试非常简单 只需使用 for 循环生成 sql 插入命令并通过 开始 和 提交 进行包装 private Array
  • 在 Android Studio 中,为什么我必须在模拟器中单击“运行应用程序”两次才能启动应用程序?

    在 Android Studio 中 当我按播放按钮在 Android 模拟器上安装并运行应用程序时 大约 5 10 秒后 我在屏幕底部收到一条消息 显示 安装成功 但应用程序实际上并未运行在模拟器上 我必须再次按下播放按钮 这是非常令人沮
  • SearchView过滤ListView

    我已经实现了搜索视图来过滤我的列表视图项目 当我输入任何文本时 它会过滤列表 但当我退出搜索视图时 它不会返回原始列表项 public class PlacesListAdapter extends ArrayAdapter
  • Android 30+ 中的视频捕获意图 - 只有所有者才能与待处理项目交互

    我正在尝试在我的应用程序上捕获视频 它可以在 android API 30 以下运行 但不能在 30 以上运行 似乎在 sdk 30 之后 android 不允许完全读取外部存储 作用域存储 我目前遇到这个错误 java lang Ille
  • 谷歌坐标认证

    当我尝试连接到 Google 坐标时 总是出现异常GoogleAuthException 我拥有 Google 地图协调中心许可证 我确实使用我的包应用程序名称和 SHA1 在 google 控制台中创建了我的客户端 ID 我将权限添加到清
  • android xamarin 中的 reCaptcha

    我想在 Xamarin android 应用程序中实现验证码 我抓住了这个在 Android 中集成 googles reCaptcha 验证 https www c sharpcorner com article how to integ
  • 计数物体和更好的填充孔的方法

    我是 OpenCV 新手 正在尝试计算物体的数量在图像中 我在使用 MATLAB 图像处理工具箱之前已经完成了此操作 并在 OpenCV Android 中也采用了相同的方法 第一步是将图像转换为灰度 然后对其进行阈值计算 然后计算斑点的数
  • Adobe 是否为其 PDF 阅读器提供 Android SDK 或 API? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我希望能够在我们的应用程序内的视图中显示本地 PDF 文件 在 Android 4 03 下的平板电脑上运行 目前 我们将 Adob eR
  • Android 模拟器插件无法初始化后端 EGL 显示

    我在 Cloudbees 上设置了 Jenkins 作业 并且可以在那里成功签出并编译我的 Android 项目 现在我想在 android 模拟器中运行一些 JUnit 测试并添加 Android 模拟器插件 我将 显示模拟器窗口 选项设
  • Android 中 Kotlin 协程的正确使用方式

    我正在尝试使用异步更新适配器内的列表 我可以看到有太多的样板 这是使用 Kotlin 协程的正确方法吗 这个可以进一步优化吗 fun loadListOfMediaInAsync async CommonPool try Long runn
  • CollapsingToolBarLayout - 状态栏稀松布颜色不改变

    几天前我更新了我的 android studio 并开始使用 CoordinatorLayout 和 CollapsingToolbarLayout 只是尝试一些东西 工具栏稀松布颜色似乎覆盖了状态栏初始颜色和状态栏稀松布颜色 从 xml
  • 无法访问 com.google.android.gms.internal.zzbfm 的 zzbfm 类文件未找到

    我正在将我的 Android 应用程序项目从GCM to FCM 为此 我使用 Android Studio 中的 Firebase 助手工具 并遵循 Google 开发人员指南中的说明 一切都很顺利 并将我的应用程序代码更改为FCM根据助
  • 尝试将相机切换回前面但出现异常

    尝试将相机切换回前面 但出现异常 找不到 问题请检查并帮助 error 01 27 11 49 00 376 E AndroidRuntime 30767 java lang RuntimeException Unable to start
  • 如何在PreferenceActivity中添加工具栏

    我已经使用首选项创建了应用程序设置 但我注意到 我的 PreferenceActivity 中没有工具栏 如何将工具栏添加到我的 PreferenceActivity 中 My code 我的 pref xml
  • 在 SQLite 中搜索时排除 HTML 标签和一些 UNICODE 字符

    更新 4 我已经成功运行了firstchar例如 但现在的问题是使用regex 即使包含头文件 它也无法识别regex操作员 有什么线索可以解决这个问题吗 更新 2 我已经编译了sqlite3我的项目中的库 我现在正在寻找任何人帮助我为我的
  • Google 云端硬盘身份验证异常 - 需要许可吗? (v2)

    我一直在尝试将 Google Drive v2 添加到我的 Android 应用程序中 但无法获得授权 我收到 UserRecoverableAuthIOException 并显示消息 NeedPermission 我感觉 Google A
  • 如何发布Android .aar源以使Android Studio自动找到它们?

    我正在将库发布到内部 Sonatype Nexus 存储库 Android Studio 有一个功能 可以自动查找通过 gradle 引用的库的正确源 我将 aar 的源代码作为单独的 jar 发布到 Nexus 但 Android Stu
  • 我的设备突然没有显示在“Android 设备选择器”中

    我正在使用我的三星 Galaxy3 设备来测试过去两个月的应用程序 它运行良好 但从今天早上开始 当我将设备连接到系统时 它突然没有显示在 Android 设备选择器 窗口中 我检查过 USB 调试模式仅在我的设备中处于选中状态 谁能猜出问
  • 增加活动的屏幕亮度

    显然 Android 操作系统中至少有三种不同的技术可以改变屏幕亮度 其中两个在纸杯蛋糕之后不再起作用 而第三个被接受的技术显然有一个错误 我想在单视图活动开始时增加屏幕亮度 然后在活动结束时将亮度恢复为用户设置 没有按钮 没有第二个视图或
  • 强制 Listview 不重复使用视图(复选框)

    我做了一个定制Listview 没有覆盖getView 方法 Listview 中的每个项目都具有以下布局 联系布局 xml

随机推荐

  • Leaflet - 获取弹出窗口内标记的纬度和经度

    我使用 Leaflet Draw 插件 我的目标是创建标记并显示一个弹出窗口 我可以在其中获取纬度和经度坐标 我设法通过 JavaScript 警报获取这些坐标 但我绝对不知道如何将坐标放入弹出窗口中 这是片段 map on draw cr
  • “System.Net.Mail.DeliveryNotificationOptions”仅适用于 Exchange 吗?

    我们有一个在 SharePoint 2010 服务器上运行的用于发送电子邮件的应用程序 我们 发件人 希望收到送达通知 但无法在实时系统上检索它们 我已经设置了System Net Mail DeliveryNotificationOpti
  • 调整面板大小而不重新验证

    I have aJPanel我在其中画线以创造铅笔的错觉 该面板位于ScrollPane 当我调整面板大小时 一次调用revalidate 方法会自动放置 并且我在该面板中绘制的所有线条都消失了 有什么方法可以让我在面板中绘制的线保持新的尺
  • 在 Android 运行时隐藏线性布局

    我有以下布局
  • Karma-Jasmine:如何正确监视 Modal?

    情况 我正在对我的 Angular Ionic 应用程序进行单元测试 我在使用模态时遇到了麻烦 目前我可以测试模态是否已被调用 到目前为止就是这样 我无法测试模式的正确 show 和 hide 方法 我收到以下错误 TypeError sc
  • Heroku 资产预编译

    今天 我正在使用一个在 Heroku 上运行了几个月的应用程序 为了让某些东西正常工作 我在我的开发环境中运行了它 rake assets precompile 当我提交更改并推送到 Heroku 时 我的请求出现 500 个错误 Acti
  • GoogleAnalytics HitBuilders.TimingBuilder

    我正在将 GA 用于 Android 应用程序 我试图使用用户计时来报告代码中某些操作已经过去了多少时间 所以我基本上做的是这样的 在代码中的某个时刻我得到System currentTimeMillis 在另一点上 我再次执行此操作 并从
  • 我通常/总是可以使用 std::forward 而不是 std::move 吗?

    我一直在看斯科特 迈耶斯的谈论通用参考来自 C and Beyond 2012 会议 到目前为止一切都有意义 然而 在50分钟左右 一位观众问了一个我也想知道的问题 迈耶斯说他并不关心答案 因为这不符合惯用语 而且会让他的头脑变得愚蠢 但我
  • DigitalMicrograph 下的螺纹大师

    我在 DigitalMicrograph 中创建了两个线程 它们在脚本执行后立即执行 我想要一些不同的东西 让我们想象一下线程的两个按钮 启动和停止线程 如何添加代码以仅在按下按钮时激活线程 如果您能为我提供一个代码示例 那将会非常有帮助
  • 创建新的 Nativescript 和 Angular 共享项目时出错

    我正在尝试使用共享项目选项创建一个 Nativescript 的新项目 但是 一旦我运行 ng new 终端上就会出现此错误 发生未处理的异常 不支持 关键字 id 使用 id 作为架构 ID 有关更多详细信息 请参阅 private an
  • 我在 tkinter 中的按钮没有显示图像[重复]

    这个问题在这里已经有答案了 这段代码只是一个例子 代码 import tkinter as tk root tk Tk photoImageObj tk PhotoImage file signout png lab tk Label ro
  • 如何从 powershell 使用构建管道上使用的 *.pfx 证书以及下载安全文件任务

    我遇到这个问题 我需要从构建管道上使用的 powershell 脚本连接到 azure 订阅 但出于安全要求 我无法在代码上写入用户和密码 因此我有一个包含凭据的 pfx 证书 现在我正在使用名为 下载安全文件 的任务 将证书放在构建上 然
  • 何时使用“getResourceAsStream”方法?

    我对上述方法感到困惑 因为在加载某些属性文件时 人们遵循不同的方法 Properties prop new Properties new FileInputStream new File
  • VS Code:如何将 HTML 文件的所有默认片段添加到 React js 文件中?

    我已经学会了html js和css 现在我想学习React 现在我非常习惯使用 HTML 文件的片段 例如div className按 Enter 键它给了我 div class className div 使用 React 时 HTML
  • 使用 Visual Studio Team Services API 添加附件(原为 Visual Studio Online)

    我正在创建一个简单的 winform 应用程序 它可以使用提供的 API 在我的 Visual Studio Team Services 敏捷工作流程中创建新的错误项目 API 文档 目前它可以创建一个新的错误 带有标题 标签和描述 我希望
  • 如何将文件从 initContainer 共享到 Kubernetes 中的基础容器

    我创建了一个自定义alpine图像 alpine audit 其中包括jar文件在 tmp目录 我需要的是使用 alpine audit 图像作为初始化容器基础图像并复制它jar将我包含的文件复制到 Pod 容器可以访问的位置 我的 yam
  • 使用数据库优先方法时如何更新模型

    我首先使用 Entity Framework Core 数据库来创建模型如 EF Core 文档中所示 但我不知道在编辑数据库后如何更新模型 您可以通过运行最初运行的命令来重新搭建模型 Force添加了选项 这将导致指定文件夹的内容被覆盖
  • 添加外部库到 symfony

    我正在尝试向 symfony 添加外部库 我在 app autoload php 上尝试过 loader gt add LibCokeId DIR vendor libcokeid libcokeid lib 但是 当我尝试在控制器中使用它
  • 在 python 中添加与 telethon 的联系

    最近 我尝试根据本教程在 telegram 和 telethon 中添加联系人 1 在 api telegram python telethon 中添加新联系人 我用了这个代码 contact InputPhoneContact clien
  • 新的可扩展列表视图高度可定制

    I need to realize something like that in the picture TITLE rectangle makes a list of object and when I click on one of t