0

嗨im顯示一個ListView與SimpleCursorAdapter和alternat ListItem樣式,我想要動態更新列表,如果用戶在視圖和更新發生。在我的ListActivity我在我的適配器從SimpleCursorAdapter延伸做動態更新ListView與擴展SimpleCursorAdapter和替代LiteItem樣式

adapter.swapCursor(newCursor); 
//notify 

我有兩個重載方法

@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

可以使用getCursor()方法以獲得適配器所基於的Cursor的正確引用,即使在更改之後swapCursor()。這樣您就不需要手動保持/更新對Cursor的引用。

1

找到了解決辦法

只是overrided的swapCursor方法

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

或者你可以使用'getCursor()'而不是你的參考。 – Luksprog

+0

@Luksprog更清潔的方式,我不必調用'super.swapCursor'把它放在答案中,我會接受它... tnx的信息 – dakait