Ich habe eine dynamische ListView
, die ein ArrayAdapter
verwendet. Wenn ein Name aus einem Drehfeld ausgewählt wird, wird der Name zusammen mit einem Symbol, das angibt, ob es männlich oder weiblich ist, zu ListView
hinzugefügt.Listview mit ArrayAdapter und ViewHolder Symbole an den falschen Artikel Hinzufügen
Meistens ist alles gut (der Name richtig in die Liste aufgenommen wird, zusammen mit einem Symbol). Aber das Symbol, das den Sex zeigt, wird dem falschen Gegenstand im ListView
hinzugefügt. Der Name wird am Ende der Liste hinzugefügt, das Symbol wird jedoch an den Namen oben in der Liste gesetzt. Ich weiß nicht, ob es die Möglichkeit gibt, ich bin ViewHolder
verwenden, aber es gibt null Dokumentation in den 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);
Es gibt einige faire Dokumentation gibt: https://developer.android.com/training/improving-layouts/smooth-scrolling.html – Vince