即时显示带有SimpleCursorAdapter
和替代ListItem
样式的ListView,如果用户在视图上并且发生更新,我想动态更新列表。在我的ListActivity中,我已经完成了
adapter.swapCursor(newCursor);
//notify
在我的适配器中,它从SimpleCursorAdapter
延伸,我有两个被覆盖的方法
@Override
public int getViewTypeCount() {
return 2;
}
和
@Override
public int getItemViewType(int position) {
adapCursor.moveToPosition(position);//adapCursor is being set in the constructor
int i= adapCursor.getInt(adapterCursor.getColumnIndexOrThrow("isactive"));
return i==1?i:0;
}
现在问题是当我在活动中更新适配器时,更新的游标在getItemViewType
方法中不可用,因此抛出索引超出范围的异常...
如何在其中获取更新的光标或返回正确的ItemViewType
此致
答案 0 :(得分:1)
找到解决方案
刚刚覆盖了swapCursor
方法
@Override
public Cursor swapCursor(Cursor c){
super.swapCursor(c);
adapCursor=c;
return c;
}
答案 1 :(得分:0)
您可以使用getCursor()
方法获取适配器所基于的Cursor
的正确引用,即使在使用swapCursor()
进行更改后也是如此。这样您就不需要手动保留/更新对Cursor
的引用。