2010-05-21 4 views
0

Cette logique est écrit dans une fonction avec la signatureListAdapters et algorithme WrapperListAdapter

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

Y at-il une meilleure façon de le faire?

// 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(); 

Aussi, est-il utile d'avoir AdapterView<? extends Adapter> dans la signature et non pas seulement AdapterView<?>?

Répondre

1

Y a-t-il une meilleure façon de procéder?

sur votre objet Tenir Cursor et appelez requery() sur, plutôt que d'essayer de le déterrer de votre adaptateur.

De plus, idéalement, vous auriez pas besoin d'appeler notifyDataSetChanged()-CursorAdapter fait automatiquement, et nous espérons que le WrapperListAdapter accrochera dans la CursorAdapter et en cascade l'opération notifyDataSetChanged().

Aussi, est-il utile d'avoir AdapterView dans la signature et pas seulement AdapterView?

Cette syntaxe lancera une erreur de compilation si vous essayez de créer un AdapterView sur un Integer ou un Button, ou un Socket. En d'autres termes, il ajoute un peu de sécurité de type à la compilation.