1
J'ai un problème lors de l'utilisation de la classe "ViewHolder". J'utilise "ViewHolder" pour améliorer mon discours d'affichage de liste. Je pense que le code est correct, mais pourquoi il lance une exception quand "setText" avec des données de "Cursor". Mon code ici:Problème avec la classe "ViewHolder" dans android
if(row==null){
LayoutInflater inflater = LayoutInflater.from(context);
row = inflater.inflate(R.layout.sbooks_row, null);
holder = new ViewHolder();
holder.id = (TextView)row.findViewById(R.id.id);
holder.title = (TextView)row.findViewById(R.id.title);
holder.icon = (ImageView)row.findViewById(R.id.icon);
row.setTag(holder);
}
else
{
holder = (ViewHolder)row.getTag();
}
holder.title.setText(cursor.getString(cursor.getColumnIndex(SBooksDbAdapter.KEY_TITLE)));
holder.id.setText(cursor.getString(cursor.getColumnIndex(SBooksDbAdapter.KEY_ROWID)));
ma course tout va bien sans « ViewHolder » code, mais quand je modifier mon code pour utiliser « ViewHolder » il jeter exception. Ainsi, le Premier, Seconds peut-être pas ce cas. Et le troisième? Pouvez-vous expliquer clairement? Je ne comprends pas à propos de "créer des lignes sans détenteur"? – Dennie
Encore une fois, vous n'avez pas dit quelle est l'exception, alors vous me forcez à deviner. Une supposition est que c'est une exception NullPointerException. Une chose qui pourrait être nulle est votre variable locale titulaire. Ce serait null si vous avez une ligne dont getTag() retourne null. getTag() retournera null si vous n'avez jamais appelé setTag() sur cette ligne. C'est ce que je veux dire par "créer des rangées sans détenteur". – CommonsWare
Désolé, votre estimation est exactement. quand je débogue mon code Il "dit" NullPointerException ". Et c'est utile si vous me montrez un extrait de code en fonction de mon code ci-dessus. Quoi qu'il en soit, je vais vérifier, merci! – Dennie