android 没有滚动的列表视图

android listview without scrolling

我有一个 LinearLayout,其中包括两个 ListView。每个 ListView 都有自己的 ArrayAdapter。现在滚动不应该在 ListViews 中,用户应该看到整个列表并滚动整个视图。由于 inerhit 滚动视图,用 ScrollView 包围 LinearLayout 不起作用...

如何展开 ListView 并让用户只滚动外部视图?

您不应该以这种方式使用 ListView。

列表视图旨在回收视图,如果它不是正在滚动的视图,则无法执行此操作。

您可以简单地使用 LinearLayout 并将每个单独的视图添加到布局中。这比使用 ListView 更好。

(这并不意味着它是最好的解决方案)

这可以在 RecyclerView 中轻松完成。但在这种情况下,您使用的是 ListView,因此请尝试 listView.setScrollContainer(false); 可能对你有用

不能重写 ListView 以失去滚动能力。它们似乎被设计为占据整个屏幕的顶级对象。
所以基本上你在这里有 2 个选项:

  • 将所有元素转换为 ListView 的项目
  • 使用 LinearLayouts 代替 ListViews 并将所有元素包装在 ScrollView 中

你应该像这样膨胀视图。

// from content View of activity or fragment
    listView = (LinearLayout) findViewById(R.id.sos_list_view);

    listView.removeAllViews();
    List<SosObject> sosList = batabase.getAllItems();

            for(SosObject t: sosList) {
                LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

// Item layout 
                View view = inflater.inflate(R.layout.sos_prewivew_item, null);

                TextView comment = (TextView) view.findViewById(R.id.sos_comment_text);
                TextView date = (TextView) view.findViewById(R.id.sos_date_text);
                TextView id = (TextView) view.findViewById(R.id.sos_answer_id);
                TextView tittle = (TextView) view.findViewById(R.id.answer_tittle);

                listView.addView(view);
            }
        }

您的 xml 应如下所示:

<ScrollView> 
    <LinearLayout>
          </LinearLayout > // Fist list
          </LinearLayout > // Second list
    </LinearLayout>
</ScrollView>