我的一个活动中有一个列表视图。我想知道当前用户可以看到多少项目。所以我尝试了listview.getfirstvisibleposition
和listview.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个项目。 这里出了什么问题?
答案 0 :(得分:0)
原因可能是因为您正在setAdapter()
方法之后使用这些方法。
总是需要一段时间来扩充列表项目,在通胀完成之前,您可能会得到错误的结果。
您应该针对特定事件执行此操作,例如点击Button
的{{1}}(OnClickListener
)或onScroll
(OnScrollListenr
)。< / p>
[编辑] 对于您在评论中的查询,您可以覆盖ListView
的{{3}}方法,然后您可以使用Activity
&安培; getfirstvisibleposition
方法:
活动恢复完成后调用(调用
getlastvisibleposition
后)。应用程序通常不会实现此方法;它适用于系统类在应用程序恢复代码运行后进行最终设置。派生类必须调用超类的此方法实现。如果他们不这样做,将抛出异常。