2011-07-06 48 views
5

我的应用程序有一个LinearLayoutLinearLayout由3 Linearlayouts组成,并且每个线性布局有一个Relativelayout和一个线性布局(最初这些线性布局的可见性消失)。如果您点击相对布局,则会显示关于线性布局。但是如何在单击相对布局后刷新整个线性布局。如何以编程方式刷新线性布局

代码:

private OnClickListener exit2Listener = new OnClickListener() 
{ 
    public void onClick(View v) 
    { 
     if(!exit2status) 
     { 
      if(RB_Constant.upcomingexits_obj.response.size() > 1) 
      { 
      if(RB_Constant.upcomingexits_obj.response.get(1).listRestaurants.size() > 0) 
      { 
       // Create the views on the fly instead of using the ListView 
       UpcomingResultsListViewAdapter2 rbupcadapter2 = new UpcomingResultsListViewAdapter2(RB_UpcomingExits.this); 
       int numItems2 = 0; 

       if(RB_Constant.upcomingexits_obj.response.get(1).listRestaurants.size() > 0) 
       { 
        numItems2 = RB_Constant.upcomingexits_obj.response.get(1).listRestaurants.size(); 
       } 

       //linearLayout2 
       for(int position=0; position < numItems2; position++) 
       { 
        View convertview = null; 
        convertview = rbupcadapter2.getView(position, convertview, null); 
        listLayout2.addView(convertview); 
       } 
      }    
      } 
      else 
      { 
      //toastMsg("No results!"); 
      } 
      listLayout2.setVisibility(View.VISIBLE); 
      exit2status=true; 

      if(!exit1status || exit3status || exit4status || exit5status) 
      { 
      //System.out.println("exit2 GONE"); 
      listLayout1.setVisibility(View.GONE); 
      listLayout3.setVisibility(View.GONE); 
      exit1status = false; 
      exit3status = false; 

      } 

      LLExitDetails.invalidate(); 
     } 
     else 
     { 
      System.out.println("exit2 GONE"); 
      listLayout2.setVisibility(View.GONE); 
      exit2status = false; 

      LLExitDetails.invalidate(); 
     } 
    }  
}; 

回答

5

检索包含一切的LinearLayout。当您需要“刷新”时,请致电invalidate。只是在UI线程中调用它。如果你在另一个线程(比如一个定时器)中调用它,请致电postInvalidate。这两个操作都会导致在操作系统准备调用该视图的onDraw方法时被调用。

+0

我加入了我的代码,请看到了。在代码中,“LLExitDetails”是主要的线性布局。并添加无效,但它不起作用。 – naresh

+0

当你说“它不工作”时会发生什么? – DeeV

+0

不爽。意味着当我称之为无效时,它不显示第一个线性布局。 – naresh

0

我花了很多时间来解决这个问题。 而且我发现刷新的LinearLayout的一种简单的方法在3行代码

您必须设置透明单位颜色style.xml

<color name="transparent">#00000000</color> 

并在代码只是调用设置背景

LinearLayout ll = (LinearLayout) findViewById(R.id.noteList); 
    ll.setBackgroundColor(getResources().getColor(R.color.transparent)); 
    ll.invalidate(); 

如果您有可拖动的后台呼叫

ll.setBackgroundResource(R.drawable.your_drawable); 
-2
linearLayout.removeAllViews(); 
//The again load the linearlayout view 
runLinearLayout(); 
0

要刷新视图以图形化的方式使用无效它调用的onDraw()和重新计算视图的尺寸和相关的高度的任何东西,宽度,边距和填充使用requestLayout它的调用onMeasure()

相关问题