我在这里有一个 ArrayAdapter 的实现,它负责填充一个显示多个视图的列表视图,其中包括一个搜索栏。现在,我正在尝试为这些搜索栏实现 OnSeekBarChangeListener。我在搜索栏旁边有一个 TextView,显示当前进度。但是,每当用户移动搜索栏时,我都会遇到更新此 TextView 的问题。当调用 onProgessChanged 方法时,我不能只调用权限项.currentValue.setText(progress),因为必须将权限项对象声明为最终对象。现在,如果我这样做,我的 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;
}