2010-11-11 83 views
0

我需要一个简单的ViewFlipper实现的帮助。当我在活动的onCreate中填充子视图“ws.addView(childView)”时,鳍状肢完美地工作。ViewFlipper addView不工作

当我想从鳍状肢中删除所有的孩子,并通过addView(child)方法添加另一堆孩子时,我遇到了一个问题。我正试图调用flipper上的onFinishInflate()和invalidate()方法,这似乎不会产生刷新鳍状肢内容的预期效果。鳍状肢的视图是空白的。我检查了鳍状肢在addView循环后是否包含孩子,在我的情况下,数字是> 1.也许我错过了一些东西。希望有人能帮助我。

   ws.removeAllViews(); 
       ArrayList<View> childViews = getAllChildrenFromSomewhere(); 
       for (View childView : childViews) { 
        ws.addView(childView); 
       } 
       ws.onFinishTemporaryDetach(); 

       ws.onFinishInflate(); 
       ws.invalidate();  

问候

回答

2

我能找到答案,我的问题。我从ViewFlipper中删除所有的孩子,下一步是将新的孩子添加到ViewFlipper。由于没有选择任何孩子,因此移除所有孩子并使视图失效导致空白视图。通过仅添加新的孩子并再次使视图无效,ViewFlipper保持空白。通过在ws.invalidate()后面使用ws.showNext(),将显示新子项的第一个子项,并且ViewFlipper按预期工作。希望这可以帮助。

  ws.removeAllViews(); 
      ArrayList<View> childViews = getAllChildrenFromSomewhere(); 
      for (View childView : childViews) { 
       ws.addView(childView); 
      } 
      ws.onFinishTemporaryDetach(); 

      ws.onFinishInflate(); 
      ws.invalidate(); 
      // show the first childView 
      ws.showNext(); 

最诚挚的问候和快乐编码:-)

+0

onFinishInflate是不可见的? :/ – 2014-03-20 15:54:46