Android ListView 具有多种布局

2023-11-22

我必须显示具有不同类型视图的列表。所以我必须定义一个带有适配器的 ListView,我必须在其中扩展多个视图。我已经经历过example给定,但问题是我的列表不对称,就像示例中每次在 4 个项目后重复标题一样。所以我面临着重复使用物品的问题getView()

 public View getView(int position, View convertView, ViewGroup parent) {   
    int type = getItemViewType(position);
    if (convertView == null) {
        holder = new ViewHolder();
        switch (type) {
             case TYPE_1:
             convertView = mInflater.inflate(R.layout.item1, null);
             .......
             break;

             case TYPE_2:
             convertView = mInflater.inflate(R.layout.item2, null);
             .......
             break;
        }
        convertView.setTag(holder);
    } else {
        holder = (ViewHolder)convertView.getTag();
    }
    ............
    ............
}

现在,如果convertView不为null,但之前使用它的项目类型不同,则布局将不匹配。这段代码将如何处理这个问题?


您可以查看此示例适配器。 getViewTypeCount 方法返回不同类型的行。 getItemViewType 方法,如果位置等于 0,则膨胀第一行布局,否则膨胀其他行布局。您可以自定义此代码示例。

    import java.util.List;
    import android.app.Activity;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.ArrayAdapter;

    /**
     * Created by MustafaS on 9.2.2015.
     */
    public class CustomArrayAdapter extends ArrayAdapter<YourModel> {

       @Override
       public int getItemViewType(int position) {

          if (position == 0) {
             return 0;
          }
          else {
             return 1;
          }
       }

       @Override
       public int getViewTypeCount() {
          return 2;
       }

       @Override
       public View getView(int position, View convertView, ViewGroup parent) {
          int type = getItemViewType(position);
          if (type == 0) {
             if (convertView == null) {
                convertView = LayoutInflater.from(activity).inflate(R.layout.listview_first_row, parent, false);
                viewHolderFirst = new ViewHolderFirst();
                convertView.setTag(viewHolderFirst);
             }
             else {
                viewHolderFirst = (ViewHolderFirst) convertView.getTag();
             }

          }
          else {
             if (convertView == null) {
                convertView = LayoutInflater.from(activity).inflate(R.layout.listview_other_row, parent, false);
                viewHolder = new ViewHolder();

             }
             else {
                viewHolder = (ViewHolder) convertView.getTag();
             }
          }
          return convertView;
       }

       protected class ViewHolderFirst {
          private RunnableViewPager pager;
          private CircleIndicator   indicator;
       }

       protected class ViewHolder {
          private ImageView imageviewRestaurant;
          private TextView  textviewRestaurantName;
          private TextView  textviewType;
          private TextView  textviewPrice;
          private TextView  textviewDistance;
          private ImageView imageviewCall;
          private ImageView imageviewCalendar;
       }
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android ListView 具有多种布局 的相关文章

  • 位图背景图像应支持哪些屏幕尺寸/密度组合?

    我正在编写一个应用程序 我需要一些全屏位图背景 基于我天真的阅读支持多屏 http developer android com guide practices screens support html在 Android 文档中 为了涵盖我的
  • PopupWindow onitemclick 中的 Android Listview 在某些设备上不起作用

    我的 ListView 在 PopupWindow 内 当我显示 PopupWindow 并单击设备 ASUS K00z 中的 Listview 行时 fonepad 工作得很好 但在 HTC Z715e 中不起作用 项目单击事件未触发 1
  • 有没有一种方法可以在不使用意图的情况下在活动之间发送数据?

    我有一个对于每个用户来说都是唯一的用户名 我想将其发送到某个活动 但我不想使用意图 create an intent and sends username Intent intent new Intent RegisterOwner thi
  • 将JSON数据解析到Android ListView中

    我已经潜伏这个网站很长一段时间了 幸运的是 到目前为止我所有的问题都得到了解答 我希望你们中的一些人能够阐明我的问题 我可以成功地让 ListView 来显示字符串数组 但是当我尝试将 JSON 数据解析为数组时 我的程序只是强制关闭 而
  • 使用busybox在后台安装apk

    我可以在 root 设备上使用 busybox 在后台安装 apk 吗 我看到类似的东西 但它不起作用 process install CommandCapture command new CommandCapture 0 chmod 77
  • 如何在android中批量插入sqlite

    我正在使用 SQLiteOpenHelper 进行数据插入 我需要插入2500个id和2500个名字 所以花费了太多时间 请任何人帮助我如何减少插入时间 我们可以一次插入多条记录吗 任何人都可以帮助我 先感谢您 代码 public clas
  • app-release-unsigned.apk 未签名

    我在 github 上下载了 Android 应用程序的 zip 文件 并尝试运行它 但出现一个包含此消息的对话框 app release unsigned apk is not signed Please configure the si
  • 当前版本的Android Gradle插件不支持按需配置

    升级到 Android Studio 3 1 2 后 出现以下错误 当前版本的 Android Gradle 插件不支持按需配置 因为您使用的是 Gradle 4 6 或更高版本 建议 通过在 gradle properties 文件中设置
  • 如何在 Jetpack compose 中制作 FlipCard 动画

    我有一个现有的应用程序 我在其中使用 XML 中的 Objectanimator 实现了 FlipCard 动画 如下所示 如果我点击一张卡片 它会水平翻转 但现在我想将其迁移到 jetpack compose 那么jetpack comp
  • 使用Picasso从url保存图像?

    我正在尝试使用 API Picasso 保存图像 为了做到这一点 我正在尝试使用Target保存 但我无法完成这项工作 我怎么能这样做呢 Trying save image public static void imageDownload
  • 无法在 Android 上编译 avahi

    我是交叉编译的新手 我被分配了使用android补丁的任务http avahi org ticket 354 http avahi org ticket 354将 avahi 核心编译为 android ndk build avahi co
  • Android WebView文件上传

    我正在开发一个 Android 应用程序 基本上它是一个WebView和一个进度条 Facebook 的移动网站 m facebook com 已加载到WebView 当我单击 选择文件 按钮上传图像时 没有任何反应 我已经尝试了所有的解决
  • 调整 SwipeRefreshLayout 高度,将 View 置于其底部

    I have SwipeRefreshLayout里面一个RelativeLayout 问题是SwipeRefreshLayout占据了屏幕上的所有位置 我需要放置一个视图after这个观点 看图片 https i stack imgur
  • Android 10 请求 ACTIVITY_RECOGNITION 权限

    我试图遵守 Google 的要求 为 Android 10 请求 ACTIVITY RECOGNITION 权限 但我似乎不明白为什么没有显示权限弹出窗口 就像其他权限 即位置 存储等 一样 我的代码是 if ContextCompat c
  • 如何从一个活动检索 Double 值到另一活动?

    我制作了一个包含 2 个活动的应用程序 其中第一个活动包含一些 EditText 十进制数字 另一个活动也包含一些 EditText 十进制 现在我想将一个 EditText 的值传递给另一个 但作为 双 而不是作为一个字符串 因为该值将用
  • 如何从图库动态卸载图像?

    我有自定义 ImageView public class ShadowedImageView extends ImageView private Paint mPaint public Bitmap bitmap null private
  • 在循环中按名称访问变量

    我正在开发一个 Android 项目 并且有很多可绘制对象 这些绘图的名称都类似于icon 0 png icon 1 png icon 100 png 我想将这些可绘制对象的所有资源 ID 添加到整数 ArrayList 中 对于那些不了解
  • 传递 Android DialogFragment 参数时,onCreateDialog 捆绑参数意外为 null

    我正在尝试使用 DialogFragment 在 Android 中显示一个基本对话框 并使用对话框消息的参数 如中所述StackOverflow线程 https stackoverflow com questions 15459209 p
  • Android Volley - 发布请求 - 无法在线工作

    我试图通过 Volley 发出 POST 请求 它在我的本地主机中工作得很好 但是当我将它移动到网络服务器时 响应为空 Java代码 RequestQueue queue Volley newRequestQueue this String
  • 如何减少 Android 中浮动 editText 提示和 editText 框之间的空间?

    我有一个带有浮动提示的 EditText 但我想知道如何减少浮动提示和 EditText 框之间的空间 现在我的用户界面看起来像https i stack imgur com ltfra jpg https i stack imgur co

随机推荐

  • 将指针编组到字符串数组

    我在整理指向字符串数组的指针时遇到一些问题 它看起来像这样无害 typedef struct char listOfStrings 100 UnmanagedStruct 这实际上嵌入到另一个结构中 如下所示 typedef struct
  • 迭代 Ibatis 中的对象列表

    我有一个对象列表 我想在其中迭代和访问 ibatis sql 中的特定字段 Ex public Class Student String id String name 我将传递一个学生对象列表 List Student 作为参数并迭代访问每
  • 在活动布局中使用 Admob 时的白色状态栏

    我正在使用 CoordinatorLayout 和relativelayout 在底部显示广告 但我得到的是白色状态栏 当我删除相对布局和 adview 时 一切正常 当我将 CoordinatorLayout 包裹在relativelay
  • 在 JavaScript 函数中使用三元运算符

    我是 Javascript 新手 正在努力解决这些三元运算符的问题 我有这个小代码段 const x MSys inShip ship launch if x send command x 虽然这工作效率足够高 但我很好奇是否可以在函数调用
  • 画布扭曲绘图。如何获得设置尺寸和样式尺寸之间的比例因子?

    我有这个画布
  • 在Python中转义html?

    我有一个 img src string but string可能包含 我该怎么做才能逃脱它 Example string test jpg img src test 不起作用 在Python 3 2中一个新的html引入了模块 该模块用于从
  • n 位整数的平方与两个 n 位整数的乘法

    免责声明 家庭作业问题 我正在寻找提示 F Lake 教授告诉他的班级 对 n 位整数进行平方比对两个 n 位整数进行乘法渐近更快 他们应该相信他吗 我相信通过移位 加法将两个 n 位整数相乘是一个 O n 操作 但我不明白为什么对一个 n
  • 使用 CSS 和 IE 旋转文本

    我需要用 CSS 旋转文本 我有以下样式规则 但它们似乎不适用于 Internet Explorer footer descr span moz transform rotate 20deg Firefox o transform rota
  • matplotlib:以 None 作为值绘制 numpy 数组

    我有一个看起来像这样的数组 k numpy array 1 0 001 1 1 0 002 None None 1 2 0 003 0 99 0 004 我想绘制不是的值 None None 并保留数组值的索引 也就是说 只要有间隙 我就想
  • Go中如何实现策略模式?

    这是我试图解决的一般问题 一组包从一个源收集数据并将其发送到多个通道 第二组包从多个通道收集数据并将其写入一个源 这组包需要转换多种格式的数据 这似乎是策略模式的完美案例 但我不确定如何最好地使其在 Go 中发挥作用 一般来说 不要迷失在构
  • 如何在 Jenkinsfile 中获取 shell 脚本的输出?

    在 Jenkinsfile Groovy 脚本阶段 假设我想发出一个 linux 命令来输出字符串的行和列 并且想要获取某一行的输出中的第 n 列 此类命令的一个示例是 ls al 那我这样做对吗 stage Get dir size sh
  • 如何使用 CSS 将图像大小调整为其自身的百分比?

    我正在尝试使用图像本身的百分比来调整图像的大小 例如 我只想将图像大小调整为 50 将图像缩小一半 但申请width 50 会将图像大小调整为容器元素 可能是父元素 的 50 例如 问题是 我可以在不使用 JavaScript 或服务器端的
  • 如何使用 micrometer-brave 在 spring-cloud-gateway 中获取trace-id

    我想在 Spring Cloud Gateway 中的每个请求的日志中显示traceId 然而 traceId和spanId只是空的 日志配置如下 logging pattern level 5p TRACE ID X traceId SP
  • ServiceStack.Redis:无法连接:sPort:0

    有时 并非总是 我得到 无法连接 sPort 0 使用 ServiceStack Redis 时尝试从 Redis 获取值时出错 有谁知道这可能意味着什么 我正在使用 PooledRedisClientManager 来获取客户端 我相信你
  • Firebase 3.0 令牌:[错误:Firebase Auth ID 令牌没有“kid”声明]

    我目前正在使用 firebase 3 0 开发一个 node js 服务 该服务由使用 firebase 2 4 的 Web 应用程序调用 我正在发送当前用户Firebase ID 令牌 Auth getAuth token 在我的标头调用
  • ng14 中具有强类型表单的 FormBuilder

    我有以下表格 const enum Fields FirstName firstName LastName lastName interface FormType Fields FirstName FormControl
  • 检索安全描述符并获取 FileSystemRights 编号

    Using Get Acl我正在尝试获取文件夹的访问权限 问题是 对于某些组 我得到的是号码而不是访问类型 下面的例子 get acl C TestFolder access FileSystemRights 536805376 Acces
  • Laravel 5.6 getRouteKeyName() 不起作用

    这是我到目前为止的代码 Web php Route get uri PageController show gt name page show 页面控制器 Show the requested page public function sh
  • 将 .jar 转换为 OSX 可执行文件?

    我制作了一个 Java 应用程序 我想在 Windows OSX 和 Linux 上分发它 而不分发 jar 文件 我使用了很棒的 Windows exe 包装器http launch4j sourceforge net 创建一个包含我的图
  • Android ListView 具有多种布局

    我必须显示具有不同类型视图的列表 所以我必须定义一个带有适配器的 ListView 我必须在其中扩展多个视图 我已经经历过example给定 但问题是我的列表不对称 就像示例中每次在 4 个项目后重复标题一样 所以我面临着重复使用物品的问题