0

我正在尝试将列表滚动到列表视图行内的已知对象。问题是如果我知道其中包含的对象,我不知道如何检索该位置。

部分问题是我使用MergeAdapter(Commonsware)作为带有标题和子标题的列表。

关于我如何实现这一目标的任何提示?

这是我编辑的解决方案

folder_list.setAdapter(all_adapter);
        if (itemToBeSynced != null) {
            int skip = 0;

            for(int i=0;i<all_adapter.getCount();i++){
                if(all_adapter.getItem(i)!=null && all_adapter.getItem(i) instanceof MileageReceiptInterface){
                    if(all_adapter.getItem(i).equals(itemToBeSynced)){
                        skip = i;
                        break;
                    }
                }
            }

            final int finalSkip = skip;
            folder_list.post(new Runnable() {
                @Override
                public void run() {
                    folder_list.smoothScrollToPosition(finalSkip);
                }
            });
        }
4

1 回答 1

1

但是我得到了这一行的类转换异常

您表示您有“标题和子标题”,该行没有考虑到这些。使用instanceof运算符查看返回的适配器是否为 a SyncItemAdapter,然后继续进行强制转换和循环的其余部分(如果是)。

或者,完全跳过嵌套循环。调用getCount()all_adapter迭代它。对于每遍,通过 检索第 N 个项目getItem()。如果那不是null并且是instanceof MileageReceiptInterface,请equals()检查。

于 2013-11-07T12:00:52.780 回答