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

时间:2010-01-04 19:52:51

标签: android listview

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

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

Adapter中有一些功能,例如看似有用的getItemId(position);但是,SimpleAdapter实现只返回传入的位置,而不是像我希望的那样的行ID。

强力解决方案是在索引0处获取View,并将其与适配器中每个项目的视图进行比较。但是,似乎没有一种简单的方法可以从适配器获取特定位置的视图。

有人有任何想法吗?

3 个答案:

答案 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