知道行内的对象(MergeAdapter),检索行的列表视图位置

时间:2013-11-07 09:39:35

标签: android android-listview commonsware-cwac

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

部分问题在于我使用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);
                }
            });
        }

1 个答案:

答案 0 :(得分:1)

  

但我得到了这一行的类强制转换

您表示您有“标题和子标题”,此行未考虑。使用instanceof运算符查看返回的适配器是否为SyncItemAdapter,并继续进行强制转换以及循环传递的其余部分。

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