2010-05-21 2 views
0

이 논리가 서명을 함수로 작성ListAdapters 및 WrapperListAdapter 알고리즘

private void showDialog(final AdapterView<? extends Adapter> parent, 
    String title, String message, final Tag subject) 

는이 일을 더 좋은 방법이 있나요?

// refresh adapter 
SimpleCursorAdapter adapter; 
if (parent.getAdapter() instanceof WrapperListAdapter) { 
    adapter = (SimpleCursorAdapter) ((WrapperListAdapter) parent.getAdapter()).getWrappedAdapter(); 
} else { 
    adapter = (SimpleCursorAdapter) parent.getAdapter(); 
} 
adapter.getCursor().requery(); 
adapter.notifyDataSetChanged(); 

또한, 서명에 AdapterView<? extends Adapter>뿐 아니라 AdapterView<?>을 가진 모든 지점이있다?

답변

1

더 좋은 방법이 있나요?

Cursor 개체를 잡고 어댑터에서 파고 드는 대신 requery()을 호출하십시오.

또한, 이상적으로, 당신은 notifyDataSetChanged() 호출 할 필요가 없습니다 것 - CursorAdapter가이 작업을 자동으로 수행하고, 희망 WrapperListAdapterCursorAdapter에 훅되고 notifyDataSetChanged() 작업을 계단식.

또한, 단지 어댑터 뷰 AdapterView를 서명에 어댑터 뷰 AdapterView를 가진이 아닌 모든 지점이있다? 당신이 Integer, 또는 Button, 또는 Socket상의 AdapterView을 만들려고하면 구문은 컴파일러 오류가 발생합니다 그건

. 즉, 컴파일 타임 형식 안전성이 약간 추가됩니다.

관련 문제