Android 如何按位置从列表视图中获取每个菜单项?

Android 如何按位置从列表视图中获取每个菜单项?,android,listview,menuitem,Android,Listview,Menuitem,假设一个列表有4个项目,我如何通过位置从列表的每个菜单项中获取视图 不幸的是,ListView中的项目通常只有可见的项目。您应该在ListAdapter上迭代 例如,在我的一些代码中,我有: SimpleCursorAdapter adapter = (SimpleCursorAdapter) this.getListAdapter(); int iNum = adapter.getCount(); for(int i=0; i<iNum; i++) {

假设一个列表有4个项目,我如何通过位置从列表的每个菜单项中获取视图

不幸的是,ListView中的项目通常只有可见的项目。您应该在ListAdapter上迭代

例如,在我的一些代码中,我有:

    SimpleCursorAdapter adapter = (SimpleCursorAdapter) this.getListAdapter();
    int iNum = adapter.getCount();
    for(int i=0; i<iNum; i++) 
    {
        Cursor c = (Cursor) adapter.getItem(i);

        // Now you can pull data from the cursor object,
        // if that's what you used to create the adapter to start with
    }
注意,在我的例子中,我还使用了一个自定义的ListView子项,使用
adapter.setViewBinder(这个)和自定义的
setViewValue(…)
函数


此外如果我没有记错,我认为列表中的“位置”不一定与适配器中的“位置”相同。。。它同样更多地基于列表中的位置。因此,即使您想要列表中的“第50个”项,如果它是第一个可见项,
getChildAt(50)
也不会返回您所期望的。我认为您可以使用
ListView.getFirstVisiblePosition()
来计算和调整。

请看这里,这个问题回答了您在这里提到的类似问题


你说的是列表视图,然后问如何从每个“菜单”中获取视图。你说的是上下文菜单还是列表视图?是的,你的问题到底是什么还不清楚。更好的解释会带来更好的答案。嗯,根据杰法马福涅的评论,我可能对这个问题有点误解。。。这取决于你想做什么。请注意,您无法获取“所有”子视图,因为ListView动态管理列表中的视图。。。您可以访问用于创建视图的每个数据项。因此,如果您试图对每个项目的UI执行某些操作,您可以使用“getChildAt”,但必须注意只处理那些不返回null的项目。如果您试图处理数据,请使用上面的解决方案。
    case R.id.selectInvertLedgerItems:
        for(int i=0; i<ItemChecked.length; i++)
        {
            ItemChecked[i] = !ItemChecked[i];
        }
        la.notifyDataSetChanged();
        RecalculateTotalSelected();
        break;