Android ListView:获取可见项的数据索引

我有一个用SimpleAdapter创build的Android ListView ,其中有更多的项目在屏幕上。 列表滚动后,我需要获取列表中第一个可见项目的数据模型中的位置。

基本上我想要一个像这样的函数: listView.getChildAt(0).getPositionInDataModel()

Adapter有一些function,比如getItemId(position) ,看起来有用; 然而, SimpleAdapter实现只是返回传入的位置,而不是像我所希望的行ID。

暴力解决scheme将获得索引0的视图,并将其与适配器中的每个项目的视图进行比较。 但是,从适配器中获取特定位置的视图似乎并不容易。

任何人有任何想法?

这很容易。 只需使用ListView.getFirstVisiblePosition() + indexYouWant 。 例如,要获取ListView显示的第二个子项的适配器中的位置,只需使用getFirstVisiblePosition() + 1

没有必要在上面的回复中显示的所有可怕的东西:)

 listView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { public void onItemSelected(AdapterView<?> parent,View view, int pos, long id) { AisleId= parent.getSelectedItemId(); } @Override public void onNothingSelected(AdapterView<?> arg0) { // TODO Auto-generated method stub } }); 

在这里,我们将得到列表项Id Id parent.getSelectedItemId();

只需使用getPositionForView(View) ( 请参阅文档 )。 这种方法的主要优点是它也适用于项目的后代View