使用扩展的SimpleCursorAdapter和Alternate LiteItem样式动态更新ListView

时间:2013-12-19 09:24:30

标签: android android-listview simplecursoradapter android-adapter

即时显示带有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

此致

2 个答案:

答案 0 :(得分:1)

找到解决方案

刚刚覆盖了swapCursor方法

        @Override
        public Cursor swapCursor(Cursor c){         
            super.swapCursor(c);
            adapCursor=c;
            return c;               
        }

答案 1 :(得分:0)

您可以使用getCursor()方法获取适配器所基于的Cursor的正确引用,即使在使用swapCursor()进行更改后也是如此。这样您就不需要手动保留/更新对Cursor的引用。