更改回视图后,ProgressBar不会更新

时间:2011-07-02 13:07:00

标签: android

我有一个显示两个标签的TabHost。我的第一个标签上有一个SeekBar,当它更改时,会更改对象ObjectA.setValue(newValue)的值。

我的第二个标签是ExpandableList。列表 - 当我扩展了一个组时 - 将在ProgressBar中反映ObjectA的值:

public View getChildView(int groupIndex, int childIndex, boolean isLastChild, View convertView, ViewGroup parent) {

    ... // ObjectA is retrieved

    LinearLayout layout;

    if (convertView == null) {
        layout = (LinearLayout) LayoutInflater.from(MyApp.getContext()).inflate(R.layout.rooms_room_list_row, parent, false);
    } else {
        layout = (LinearLayout) convertView; 
    }

    final ProgressBar pbLevel = (ProgressBar)layout.findViewById(R.id.ddLevel);       
    pbLevel.setProgress(objectA.getValue());

这种方法很有效,但以下情况除外:

  1. 我转到第一个视图,设置值为50
  2. 我切换到第二个标签,然后展开该组。 ProgressBar正如预期的那样显示50%。
  3. 我切换回第一个标签页并将值50更改为值5
  4. 当我切换回第二个标签页时,由于该组已经展开,Android会自动重新创建视图。在getChildView方法中出现断点,我可以验证我的新objectA值是否设置为5(再次,如预期的那样),我可以看到ProgressBar的值设置为5,但是屏幕没有反映这种变化 - 它仍然坚持显示50%。如果我将该组折叠并重新打开它,它将起作用,现在将反映出5%的值。
  5. 那么当我简单地切换回视图时会发生什么?在重新创建视图时,为什么我的屏幕在第一次运行getChildView方法后不会反映5%?

0 个答案:

没有答案