У меня есть реализация ArrayAdapter здесь, которая отвечает за заполнение списка, которое отображает несколько видов, среди которых значок поиска. Прямо сейчас, я пытаюсь реализовать OnSeekBarChangeListener для этих поисковых баров. У меня есть TextView рядом с стрелкой, отображающей текущий прогресс. Тем не менее, у меня возникают проблемы с обновлением этого TextView всякий раз, когда пользователь перемещает поисковый барьер. Когда вызывается метод onProgessChanged, я не могу просто вызвать expertItem.currentValue.setText (progress), потому что тогда объект propertyItem должен быть объявлен окончательным. Теперь, если бы я это сделал, предложение my else больше не работало бы, поскольку я, очевидно, не могу назначить новое значение для конечного объекта.Изменение атрибутов объекта во внутреннем классе
Какой был бы лучший способ действий здесь?
public View getView(int position, View convertView, ViewGroup parent){
View row = convertView;
CompetenceItem competenceItem = null;
if (row == null) {
...
competenceItem = new CompetenceItem();
competenceItem.seekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
int progressChanged = 0;
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser){
progressChanged = progress;
}
...
});
competenceItem.currentValue = (TextView) row.findViewById(R.id.textview_header_competence_current_value);
row.setTag(competenceItem);
} else {
competenceItem = (CompetenceItem) row.getTag();
}
//competenceItem gets filled with data here
return row;
}
static class CompetenceItem{
TextView title;
SeekBar seekbar;
TextView currentValue;
}
Сделать его членом класса активности вместо локальной конечной переменной –
Сделать временную ссылку «final» на тот же самый объект «propertyItem», а затем использовать это в анонимном классе. – DeeV