Tengo un ListView
dinámico que usa un ArrayAdapter
. Cuando se selecciona un nombre de una rueda giratoria, el nombre junto con un icono que muestra si son masculinos o femeninos se agrega al ListView
.ListView con ArrayAdapter y ViewHolder agregando iconos al elemento incorrecto
Casi todo es bueno (el nombre se agrega a la lista correctamente, junto con un icono). Pero el ícono que muestra el sexo se agrega al ítem incorrecto en el ListView
. El nombre se agrega al final de la lista, pero el icono se coloca en el nombre en la parte superior de la lista. No sé si es la forma en que estoy usando ViewHolder
, pero no hay documentación en el Android website.
// Listview inflater
inflater = (LayoutInflater) (this).getSystemService(LAYOUT_INFLATER_SERVICE);
// List Array.
mAdapter = new ArrayAdapter<String>(this, R.layout.player_simple_list,
R.id.label, mStrings) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Log.i("ANDY","View getView Called");
// A ViewHolder keeps references to children views to
// avoid unneccessary calls to findViewById() on each row.
ViewHolder holder;
if (null == convertView) {
Log.i("ANDY","Position not previously used, so inflating");
convertView = inflater.inflate(R.layout.player_simple_list, null);
// Creates a ViewHolder and store references to the
// two children views we want to bind data to.
holder = new ViewHolder();
holder.text = (TextView) convertView.findViewById(R.id.label);
holder.icon = (ImageView) convertView.findViewById(R.id.icon);
if (sexmale == true) {
holder.icon.setImageBitmap(maleicon);
}
else {
holder.icon.setImageBitmap(femaleicon);
}
convertView.setTag(holder);
} else {
// Get the ViewHolder back to get fast access to the TextView
// and the ImageView.
holder = (ViewHolder) convertView.getTag();
}
// Bind the data efficiently with the holder.
holder.text.setText(getItem(position));
// Change icon depending is the sexmale variable is true or false.
Log.i("ANDY","getCount = "+mAdapter.getCount());
return convertView;
}
};
setListAdapter(mAdapter);
Existe algún tipo de documentación que hay justo: https://developer.android.com/training/improving-layouts/smooth-scrolling.html – Vince