listview.getfirstvisibleposition()和getlastvisibleposition()返回错误的值

时间:2015-03-09 06:42:08

标签: android android-listview android-adapter

我的一个活动中有一个列表视图。我想知道当前用户可以看到多少项目。所以我尝试了listview.getfirstvisiblepositionlistview.getlastvisibleposition。但他们分别返回-1和0。

以下是我的相关代码。

listView = (ListView)rootView.findViewById(R.id.listView1);
//fill arrayList
listView.setAdapter(newProductAdapter(getActivity(),R.layout.activity_product_adapter, arrayList));
Log.d("first",String.valueOf(listView.getFirstVisiblePosition()));
Log.d("last",String.valueOf(listView.getLastVisiblePosition()));

第一个日志的结果是-1,第二个是0。 在我的设备中,listview中显示了4个项目。 这里出了什么问题?

1 个答案:

答案 0 :(得分:0)

原因可能是因为您正在setAdapter()方法之后使用这些方法。

总是需要一段时间来扩充列表项目,在通胀完成之前,您可能会得到错误的结果。

您应该针对特定事件执行此操作,例如点击Button的{​​{1}}(OnClickListener)或onScrollOnScrollListenr)。< / p>


[编辑] 对于您在评论中的查询,您可以覆盖ListView的{​​{3}}方法,然后您可以使用Activity &安培; getfirstvisibleposition方法:

  

活动恢复完成后调用(调用getlastvisibleposition后)。应用程序通常不会实现此方法;它适用于系统类在应用程序恢复代码运行后进行最终设置。

     

派生类必须调用超类的此方法实现。如果他们不这样做,将抛出异常。