Android ListView - 如何预测可显示的行数

时间:2012-09-16 18:22:03

标签: android android-layout listview android-activity

由于Android具有不同的布局大小,因此ListView中显示的行数是可变的,理想情况下,我们需要执行API调用...

http://www.example.com/get_product?count=N&..

其中N =行数可以在给定的ListView + 10项缓冲区中显示,用于屏幕外滚动效果。

在应用中定义N的值的最佳方法是什么?

4 个答案:

答案 0 :(得分:1)

试试这个:

ListView list = (ListView) findViewById(R.id.list) //R.id.list will be your listview id in the layout    
int n = Double.intValue(list.getHeight()/list.getChildAt(1).getHeight())

如果它不起作用,因为它需要首先创建列表以获取子项,并且您具有listItem的dp高度(可能是您使用自定义布局),您可以使用

ListView list = (ListView) findViewById(R.id.list) //R.id.list will be your listview id in the layout    
Resources r = getResources();
int px = Math.round(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, !!!YOUR LISTITEM HEIGHT IN DP!!!, r.getDisplayMetrics())); //Convert DP to actual size in pixels (rounded)
int n = Double.intValue(list.getHeight()/px)

答案 1 :(得分:0)

  

使用方法listView.setOnScrollListener(OnScrollListener)将onScrollListener设置为listview。    @param visibleItemCount   方法onScroll(AbsListView视图,int firstVisibleItem,int   您正在寻找的是visibleItemCount,int totalItemCount。

答案 2 :(得分:0)

如果您使用的是BaseAdapter或ArrayAdapter之类的自定义适配器,那么getCount()会在ListView中为您提供要充气的视图。

这将为您提供行数

getCount()被称为之前 getView()方法,因为getCount()只能告知有多少视图要充气。

答案 3 :(得分:0)

您可以致电getListView().getChildCount()以获取可见项目的数量。虽然这只能在显示ListView后调用。因此,当您尝试获取项目数时,我不确定您是否会在第一次尝试时获得此项。