由于Android具有不同的布局大小,因此ListView
中显示的行数是可变的,理想情况下,我们需要执行API调用...
http://www.example.com/get_product?count=N&..
其中N
=行数可以在给定的ListView
+ 10项缓冲区中显示,用于屏幕外滚动效果。
在应用中定义N
的值的最佳方法是什么?
答案 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后调用。因此,当您尝试获取项目数时,我不确定您是否会在第一次尝试时获得此项。