0

我在这里有一个 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;
}
4

1 回答 1

0

我没有尝试过,但是,也许您可​​以else摆脱(CompetenceItem) row.getTag()CompetenceItem. 然后你可以调用子句competenceItem.currentValue.setText(progress)if

于 2014-11-09T16:29:24.547 回答