У меня есть список элементов в (подклассе) ArrayAdapter, и когда один из элементов в ArrayAdapter изменяется, все они должны обновить свое представление. (Для некоторого контекста это модель оптовых цен, когда чем больше вещей вы покупаете, тем дешевле становится все остальное, и я хочу обновить цену всего, когда вы добавляете что-то в корзину)
Прочитав документацию, я ожидал, что notifyDataSetChanged () добьется цели, но это не то, что я хочу. Что мне делать?
По запросу, вот моя функция getView. Метод orderPhoice - метод totalPrice (), который изменяется в зависимости от того, что еще выбрано.
@Override
public View getView(int position, View convertView, final ViewGroup parent){
final EditingOrderChoiceAdapter adapter = this;
View choiceView = convertView;
if (choiceView == null){
LayoutInflater choiceViewInflater = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
choiceView = choiceViewInflater.inflate(R.layout.order_choice_row, null);
}
final OrderChoice orderChoice = choices.get(position);
if (orderChoice != null){
TextView choiceName = (TextView)choiceView.findViewById(R.id.choice_name);
choiceName.setText(orderChoice.choice.name);
TextView choicePrice = (TextView)choiceView.findViewById(R.id.choice_price);
choicePrice.setText(orderChoice.totalPrice().formatted());
CheckBox choiceCheckBox = (CheckBox)choiceView.findViewById(R.id.choice_checked);
choiceCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
orderChoice.selected = isChecked;
adapter.notifyDataSetChanged();
}
});
choiceCheckBox.setChecked(orderChoice.selected);
}
return choiceView;
}