【问题标题】:Android - Complex view or something else?Android - 复杂视图还是其他?
【发布时间】:2013-06-18 01:32:35
【问题描述】:

我想创建一个包含 2 个列表的 Activity。暂时我已经创建了 2 个列表视图,它们在适当的 *.xml 文件中声明了不同的行,并将屏幕划分为 50/50,但看起来不太好。这就是为什么我想制作一个滚动视图,其中包含第一个 listView 中的行、分隔符,然后是第二个 listView 中的行。

我可以使用我已有的(定义行布局的 xml 文件)吗?

我需要创建扩展 View 的新类还是有其他方法?

我要补充的是,每一行大约有5个控件需要设置,所以不是很简单的一行。

【问题讨论】:

  • 你真的需要滚动视图吗?为什么不将它们都添加到同一个滚动视图中?这很容易以编程方式完成
  • 我希望它被分开 - 所以第一行是一个标签,可能是图像,然后是第一个列表,然后是分隔符,另一个标签,可能是图像,然后是第二个列表。如何在列表中添加分隔符? ListView的第三种入口?你的意思是,在插入许多不同类型的项目后,我只需在 getView 中创建一个 if 语句,以了解它是第一个类型还是其他类型?
  • 是的,基本上。您将拥有 3 种(也许更多)类型的行。你有你的第一个列表行,你的第二个列表行,然后是一个分隔符(带有图像或其他)。您将插入一个分隔符,然后遍历第一个列表。插入第二个分隔符,遍历第二个列表
  • 谢谢你!这将使一切变得简单得多。我在这里stackoverflow.com/questions/3514548/… 阅读有关此类解决方案的信息,并想问您是否知道这些 ViewHolders 是什么?看来我需要它们。
  • 所有视图持有者只是一个保存您的视图的对象,以便于访问和组织。

标签: android layout view


【解决方案1】:

你可以照你说的做,仍然会使用 listView。 ListViews 可能很棘手,因为您必须将行数与适配器中的项目数相匹配。我的意思是你可以使用 scrollView 来启动。除非您谈论数百行,否则您不会看到性能提升。

这里是如何膨胀一行,并以编程方式将其添加到滚动视图中

ScrollView scrollView = (ScrollView)findViewById(R.id.scrollView);
...
for(int i = 0; i < firstList.size(); i++){
   //here my row was a relative layout.  Could be LinearLayout, or anything 
   RelativeLayout row = (RelativeLayout)View.inflate(this, R.layout.list_row, null);
   tv = (TextView)row.findViewById(R.id.tv);
   tv.setText("Some text");
   ...initialize other views in row
   scrollView.addView(row);
}

然后重复第二个列表,不要忘记插入分隔符

【讨论】:

    【解决方案2】:

    您可能需要学习 custom adepter

    您可以自定义列表项的顺序。 假设您总共有 10 个项目要显示在屏幕上,并且您想将其分隔为 5/5 。

    这是根据上述场景的基本逻辑

    @Override
    public View getView(int position, View convertView, ViewGroup parent) 
        {
    
         if (postion<5)
        {
        //Write your code here for first five items 
        }
        else{
        //Write your code here for rest five items 
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-22
      • 1970-01-01
      • 1970-01-01
      • 2012-05-01
      • 2011-05-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多