Quelle est l'utilité de ViewHolder
dans une coutume Adapter
?Utilitaire de ViewHolder dans un adaptateur personnalisé
J'ai créé un Adapter
en utilisant le ViewHolder
et un autre sans et j'ai le même résultat ... quelle en est l'utilité?
Ceci est mon CustomAdapter.class avec le ViewHolder
:
public class CustomAdapter extends ArrayAdapter<Fruit> {
public class ViewHolder {
TextView txtName;
TextView txtColor;
}
CustomAdapter(Context context, ArrayList<Fruit> data) {
super(context, R.layout.item_fruit, data);
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
final Fruit fruit = getItem(position);
ViewHolder viewHolder = new ViewHolder();
if (convertView == null) {
LayoutInflater inflater = LayoutInflater.from(getContext());
convertView = inflater.inflate(R.layout.item_fruit, parent, false);
}
viewHolder.txtName = (TextView) convertView.findViewById(R.id.textView_fruit_name);
viewHolder.txtColor = (TextView) convertView.findViewById(R.id.textView_fruit_color);
if (fruit != null) {
viewHolder.txtName.setText(fruit.getName());
viewHolder.txtColor.setText(fruit.getColor());
}
return convertView;
}
}
Ceci est mon CustomAdapter.class sans ViewHolder
:
public class CustomAdapter extends ArrayAdapter<Fruit> {
CustomAdapter(Context context, ArrayList<Fruit> data) {
super(context, R.layout.item_fruit, data);
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
final Fruit fruit = getItem(position);
if (convertView == null) {
LayoutInflater inflater = LayoutInflater.from(getContext());
convertView = inflater.inflate(R.layout.item_fruit, parent, false);
}
TextView txtName = (TextView) convertView.findViewById(R.id.textView_fruit_name);
TextView txtColor = (TextView) convertView.findViewById(R.id.textView_fruit_color);
if (fruit != null) {
txtName.setText(fruit.getName());
txtColor.setText(fruit.getColor());
}
return convertView;
}
}
Vous n'utilisez pas correctement le modèle de viewholder. Vous devez initialiser le viewholder et les vues à l'intérieur du bloc 'if (convertView == null)' et utiliser 'setTag' et' getTag' pour récupérer le viewHolder – akash93
Voici une meilleure réponse à votre question
[Link] (http : //stackoverflow.com/questions/21501316/what-is-the-benefit-of-viewholder) –