【问题标题】:Is it possible to use view inflator to inflate individual items?是否可以使用视图充气机为单个项目充气?
【发布时间】:2012-06-25 05:40:07
【问题描述】:

现在我正在使用自定义列表视图,并且正在扩充要查看的 xml 文件。我想根据位置膨胀布局以产生不同的膨胀。

public View getView(int position,View v,ViewGroup parent) {
    if (v == null) {
        v = li.inflate(R.layout.grid_item,null);

        final TextView tv = (TextView) v.findViewById(R.id.grid_text);
        tv.setText(String.valueOf(position+1));
    }

网格项目是我正在膨胀的。我想根据位置膨胀几个不同的项目,同时仍然保持文本视图。目前要做到这一点,我在 grid_item 中有一个我正在更改的图像,但我宁愿这样做。

【问题讨论】:

  • 你的意思是你想根据位置膨胀不同的xml吗? “给几个不同的项目充气”到底是什么意思?
  • 是的,根据位置膨胀不同的 xml。

标签: java android listview view


【解决方案1】:

好的,所以如果你想根据位置膨胀不同的 xml,那么只需使用一些我会说的旧学校代码,比如

if (v == null) {
    if(position < 5){//whatever condition you want here    
        v = li.inflate(R.layout.grid_item,null);
    }
    else{
        v = li.inflate(R.layout.grid_item2,null);
    }
}

final TextView tv = (TextView) v.findViewById(R.id.grid_text);
tv.setText(String.valueOf(position+1));

然后只需确保在所有 xmls grid_text 中命名文本字段即可。

【讨论】:

  • v = li.inflate ... 将膨胀整个视图。不只是其中的一部分,对吧?
  • 是的,但我不明白你夸大它的“部分”是什么意思。据我所知,你只能膨胀一个完整的 xml。一旦它膨胀,你可以抓住它的任何你想要的部分。我的回答没有给你你需要的解决方案吗?如果没有,您是否清楚了解您需要完成哪些工作才能更好地理解问题?
  • 好吧,我想通了!这绝对有帮助!
  • 很高兴为您提供帮助,同时确保在所有 xml 中将 textview 命名为相同,您应该一切顺利。
【解决方案2】:

为不同的位置创建不同的xml

 or

使用容器创建一个 xml(仅限线性布局)并在运行时根据位置添加视图

【讨论】:

  • 我对不同的职位有不同的 xml,但我该怎么做。我在网上看了,人们说不可能,但应该是。
  • 那么有多少种不同的布局以及使用不同布局的标准是什么(意味着哪个元素需要哪个布局)
  • 有四种不同的布局。目前我有一个由四个数字组成的数组,我将用它们来设置每个 indv。位置。
  • 可以使用 if (v == null) { switch(position%4) case 1: v = li.inflate(R.layout.grid_item,null); break v = li.inflate(R.layout.grid_item2,null);... 和 nut 忘记在那里设置默认值
  • 是的,但这会用相同的 xml 文件扩展整个列表视图。但我想在同一个列表视图中使用不同的 xml。
猜你喜欢
  • 2021-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-14
相关资源
最近更新 更多