我有一个用ListView
创建的Android SimpleAdapter
,其中包含的项目多于屏幕中的项目。滚动列表后,我需要获取列表中第一个可见项的数据模型中的位置。
基本上我想要一个像listView.getChildAt(0).getPositionInDataModel()
这样的函数。
Adapter
中有一些功能,例如看似有用的getItemId(position)
;但是,SimpleAdapter
实现只返回传入的位置,而不是像我希望的那样的行ID。
强力解决方案是在索引0处获取View,并将其与适配器中每个项目的视图进行比较。但是,似乎没有一种简单的方法可以从适配器获取特定位置的视图。
有人有任何想法吗?
答案 0 :(得分:90)
这很容易。只需使用ListView.getFirstVisiblePosition() + indexYouWant
即可。例如,要获取ListView
中显示的第二个孩子的适配器中的位置,只需使用getFirstVisiblePosition() + 1
。
不需要上面回复中显示的所有可怕内容:)
答案 1 :(得分: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 parent.getSelectedItemId();
答案 2 :(得分:-1)
只需使用getPositionForView(View)
(see documentation)即可。这种方法的主要优点是它也适用于项目的后代View
。