我正在尝试将列表滚动到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);
}
});
}
答案 0 :(得分:1)
但我得到了这一行的类强制转换
您表示您有“标题和子标题”,此行未考虑。使用instanceof
运算符查看返回的适配器是否为SyncItemAdapter
,并继续进行强制转换以及循环传递的其余部分。
或者,完全跳过嵌套循环。在getCount()
上调用all_adapter
并对其进行迭代。对于每个传递,通过getItem()
检索第N个项目。如果不是null
并且是instanceof
MileageReceiptInterface
,请执行equals()
检查。