У меня есть список, содержащий кучу прядильщиков, но когда я просматриваю список, значение для счетчика сбрасывается. Есть ли способ исправить это? Вот как выглядит класс ArrayAdapter.Android - выбор прокрутки исчезает при прокрутке ListView
открытый класс ProductArrayAdapter расширяет ArrayAdapter { закрытый конечный контекст контекста;
private final List<Product> values;
public ProductArrayAdapter(Context context, List<Product> values) {
super(context, R.layout.product_item, values);
this.context = context;
this.values = values;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.product_item, parent, false);
Product availableProduct = values.get(position);
((TextView) rowView.findViewById(R.id.productCode)).setText(Product.getProductName(availableProduct.getProductCode()));
((Spinner) rowView.findViewById(R.id.count)).setAdapter(productCounts);
return rowView;
}
}
Всякий раз, когда вы прокручиваете, вы раздуваете каждый элемент списка, поэтому теряете все старые значения. Вы должны каждый раз переустанавливать его в getView. –
ListViews (и другие адаптеры) перерабатывают компоновку в каждой строке, поэтому вам нужно сохранить значения в другом месте. Пожалуйста, смотрите [Turbo-Charge Your UI] (http://www.google.com/events/io/2009/sessions/TurboChargeUiAndroidFast.html) или [World of ListView] (http://www.google.com/events /io/2010/sessions/world-of-listview-android.html) ведущими разработчиками Android, они подробно описывают эту тему. – Sam