I have an implementation of ArrayAdapter here that's responsible for populating a listview which displaying multiple views, among which a seekbar. Right now, I'm trying to implement a OnSeekBarChangeListener for these seekbars. I have a TextView next to the seekbar displaying the current progress. However, I am running into issues with updating this TextView whenever the user moves the seekbar. When the onProgessChanged method is called, I can't just call competenceItem.currentValue.setText(progress) because then the competenceItem object would have to be declared final. Now if I were to do this, my else clause wouldn't be working anymore as I obviously can't assign a new value to a final object.
What would be the best course of action here?
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;
}