【问题标题】:Android ListView - how to predict how many row can be displayedAndroid ListView - 如何预测可以显示多少行
【发布时间】:2012-09-16 18:22:02
【问题描述】:

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

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

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

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

【问题讨论】:

  • 如果您的行具有固定高度,则将 ListView 的高度除以行高。否则你将不得不单独计算每一行的高度......

标签: android android-layout listview android-activity


【解决方案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)

【讨论】:

    【解决方案2】:

    使用方法 listView.setOnScrollListener(OnScrollListener) 将 onScrollListener 设置为 listview。 @param visibleItemCount of 方法 onScroll(AbsListView 视图,int firstVisibleItem,int visibleItemCount, int totalItemCount) 就是你要找的。​​p>

    【讨论】:

      【解决方案3】:

      如果您使用自定义适配器,如 BaseAdapter 或 ArrayAdapter,那么getCount() 将为您提供要在 ListView 中膨胀的 View 数量。

      这将为您提供行数

      getCount() 是在getView() 方法之前调用的之前,因为getCount() 只告诉要膨胀多少视图。

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-08-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多