У меня есть ViewHolder:
import android.widget.EditText;
import android.widget.TextView;
public class ListViewHolder {
TextView productName;
EditText productStock;
}
И мой ListAdapter (listProducts - это массив объектов Product):
public Product getItem(int position){
return listProducts.get(position);
}
public View getView(final int position, View convertView, ViewGroup parent){
View row;
final ListViewHolder listViewHolder;
if(convertView == null){
LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = layoutInflater.inflate(R.layout.set_stock_listview,parent,false);
listViewHolder = new ListViewHolder();
listViewHolder.productName = (TextView) row.findViewById(R.id.productName);
listViewHolder.productStock = (EditText) row.findViewById(R.id.productStock);
row.setTag(listViewHolder);
}
else{
row = convertView;
listViewHolder = (ListViewHolder) row.getTag();
}
final Product product = getItem(position);
if(product.getDesiredQuantity()>0){
listViewHolder.productStock.setText(String.valueOf(product.getDesiredQuantity()));
}
listViewHolder.productName.setText(product.getName()+":");
listViewHolder.productStock.setInputType(InputType.TYPE_CLASS_NUMBER);
listViewHolder.productStock.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
product.setDesiredQuantity(Integer.valueOf(editable.toString()));
}
});
return row;
}
Однако при прокрутке списка значениеEditText дублирует многие другие строки.Похоже, что он также обновляет другие объекты Product, но я не смог найти проблему, есть идеи?