【问题标题】:ListView inside ScrollView, bad idea? Than how to substitute a dynamically populated list inside a ScrollView?ScrollView 中的 ListView,坏主意?比如何替换 ScrollView 中的动态填充列表?
【发布时间】:2014-12-14 21:10:40
【问题描述】:

我遇到了这个问题,我需要在其中一个 ScrollView 是根元素的活动中动态输出一个“列表”。

我发现了很多帖子,人们展示了解决方法和技巧,但大多数人说将列表视图放在滚动视图中是一个坏习惯。我明白,但没有一个显示哪个是正确的方法?我可以考虑动态创建文本视图并将它们添加到布局中,但我不确定这是否是最好的方法。

那么,如何正确完成这项工作? 谢谢!

【问题讨论】:

  • 为什么不将 ListView 本身作为您的 Root 元素。 Btw ListView 现在已经过时了。试试 RecyclerView。
  • 虽然我不同意上一条评论中的“现在已过时”这一点,但我同意关于您的根元素的问题。既然ListView 可以有不同类型的行,因此可以容纳你想要的任何东西,为什么你认为拥有ScrollView 根是正确的选择?
  • @CommonsWare - 我有一个包含很多子元素的布局(其中滚动视图是必不可少的),并且托管活动有两个 JSON 数组,我需要循环它们以获得新数据。数组的长度可能会有所不同,因此列表视图对我来说是理想的选择。那么我还能实现什么来在一个巨大的布局中显示这两个 JSON 数组呢?
  • “我有一个包含很多子元素的布局(滚动视图是必不可少的)”——垂直滚动容器是必不可少的。所以,我再问一遍:为什么你认为拥有ScrollView 根是该容器的正确选择,而不是ListView
  • @CommonsWare - 除了将滚动视图作为根元素实现之外,还有其他方法可以获得“垂直滚动容器”吗?

标签: android listview dynamic scroll android-scrollview


【解决方案1】:

很遗憾,我没有得到我希望的答案。我继续搜索,找到了一个很好的解决方案,在我的情况下非常适合!

我创建了一个简单的 LinearLayout 并将我的 ArrayAdapter 连接到它,同时删除了我之前使用的 ListView。不建议用于长列表,但我的长度少于 10 项。

...

        //Creating a custom ArrayAdapter
        ArrayAdapter adapt2 = new DirectionsListAdapter(this, myList);      

        //Pointing to the LinearLayout
        LinearLayout testContainer = (LinearLayout) findViewById(R.id.testContainer);
        final int adapterCount = adapt2.getCount();

        //adding each adapter item to the LinearLayout
        for (int i = 0; i < adapterCount; i++) {
              View item = adapt2.getView(i, null, null);
              testContainer.addView(item);
            }

...

到目前为止,它运行得非常好,我拥有我之前拥有的所有自定义选项,它又快又干净,而且最好的是它甚至可以在根 ScrollView 内自动调整其高度。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-01
    • 1970-01-01
    • 2020-11-02
    • 2020-02-21
    • 2015-11-18
    • 1970-01-01
    相关资源
    最近更新 更多