Android:如何在listview中显示前三项,在scroll中显示其余项

Android:如何在listview中显示前三项,在scroll中显示其余项,android,listview,Android,Listview,目前,我使用可见性“GONE”显示listview,然后单击按钮显示“visibility”,但它在listview中仅显示1项,在scrollview中显示其他元素(我需要滚动),因此我决定保持listview在listview滚动中至少显示3项,其余元素在listview滚动中显示。 如何解决这个问题,提前谢谢 第一张图片是我的代码 一般来说,我需要在ScrollView中添加第二幅图像,这是一个坏主意 相反,您应该使用线性布局并在其中对列表项进行充气。 不难做到。就用for循环什么的。 如

目前,我使用可见性“GONE”显示listview,然后单击按钮显示“visibility”,但它在listview中仅显示1项,在scrollview中显示其他元素(我需要滚动),因此我决定保持listview在listview滚动中至少显示3项,其余元素在listview滚动中显示。 如何解决这个问题,提前谢谢

第一张图片是我的代码
一般来说,我需要在ScrollView中添加第二幅图像,这是一个坏主意

相反,您应该使用线性布局并在其中对列表项进行充气。 不难做到。就用for循环什么的。 如果必须使用ListView,则可以在填充ListView后对其调用以下方法

(将listAdapter.getCount()更改为要显示的单元格数

 public static void setListViewHeightBasedOnChildren(ListView listView) {
            ListAdapter listAdapter = listView.getAdapter(); 
            if (listAdapter == null) {
                // pre-condition
                return;
            }
        int totalHeight = 0;
        for (int i = 0; i < listAdapter.getCount(); i++) {
            View listItem = listAdapter.getView(i, null, listView);
            listItem.measure(0, 0);
            totalHeight += listItem.getMeasuredHeight();
        }

        ViewGroup.LayoutParams params = listView.getLayoutParams();
        params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
        listView.setLayoutParams(params);
    }
public static void setListViewHeightBasedOnChildren(ListView ListView){
ListAdapter ListAdapter=listView.getAdapter();
如果(listAdapter==null){
//前提条件
返回;
}
int totalHeight=0;
对于(int i=0;i
滚动视图中的列表视图通常是个坏主意

相反,您应该使用线性布局并在其中对列表项进行充气。 不是很难做到。只要使用for循环或其他什么。 如果必须使用ListView,则可以在填充ListView后对其调用以下方法

(将listAdapter.getCount()更改为要显示的单元格数

 public static void setListViewHeightBasedOnChildren(ListView listView) {
            ListAdapter listAdapter = listView.getAdapter(); 
            if (listAdapter == null) {
                // pre-condition
                return;
            }
        int totalHeight = 0;
        for (int i = 0; i < listAdapter.getCount(); i++) {
            View listItem = listAdapter.getView(i, null, listView);
            listItem.measure(0, 0);
            totalHeight += listItem.getMeasuredHeight();
        }

        ViewGroup.LayoutParams params = listView.getLayoutParams();
        params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
        listView.setLayoutParams(params);
    }
public static void setListViewHeightBasedOnChildren(ListView ListView){
ListAdapter ListAdapter=listView.getAdapter();
如果(listAdapter==null){
//前提条件
返回;
}
int totalHeight=0;
对于(int i=0;i