0

안녕하세요, SimpleCursorAdapter 및 대체 ListItem 스타일의 목록보기를 표시하는 사용자가보기에 있고 업데이트가 발생하면 동적으로 목록을 업데이트하려고합니다. 내 ListActivity에서 나는의 어댑터를 업데이트 할 때 이제 문제는 내가 두 오버라이드 (override) 방법확장 된 SimpleCursorAdapter 및 대체 LiteItem 스타일을 사용하여 ListView를 동적으로 업데이트

@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; 

     } 

SimpleCursorAdapter에서 확장 내 어댑터

adapter.swapCursor(newCursor); 
//notify 

했을 액티비티는 getItemViewType 메서드에서 업데이트 된 커서를 사용할 수 없으므로 바운드 예외 예외가 발생합니다.

어떻게

답변

0

당신은 getCursor() 방법을 사용할 수 있습니다

그냥 swapCursor 방법을 오버라이드 해결책을 발견 ItemViewType

감사합니다 거기에 업데이트 된 커서를 얻거나 적절한 반환 할 수 있습니다 어댑터를 기반으로 한 Cursor에 대한 올바른 참조를 얻기 위해 어댑터를 변경 한 후에도 swapCursor(). 이렇게하면 Cursor에 대한 참조를 수동으로 유지/업데이트 할 필요가 없습니다.

1

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

또는 참조 대신'getCursor()'를 사용할 수 있습니다. – Luksprog

+0

@Luksprog 훨씬 더 깨끗한 방식으로'super.swapCursor'를 호출해야합니다. 대답에 넣으면 받아 들일 것입니다 ... info – dakait