2011-07-06 10 views
5

LinearLayoutLinearLayoutは、で構成され、それぞれの線形レイアウトにはRelativelayoutと1つの線形レイアウトがあります(最初はこれらの線形レイアウトの可視性はなくなりました)。相対レイアウトをクリックすると、関連する線形レイアウトが表示されます。しかし、どのように相対レイアウトをクリックした後、線形レイアウト全体をリフレッシュするか。プログラムで線形レイアウトをリフレッシュする方法

コード:

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に電話してください。両方とも、OSが呼び出す準備ができたら、ViewのonDrawメソッドが呼び出されます。

+0

は、私は私のコードを追加してくださいだrequestLayoutそれを見てください。コード "LLExitDetails"は主要な線形レイアウトです。私は無効を追加するが、それは動作していません。 – naresh

+0

「動作していません」と言われたらどうなりますか? – DeeV

+0

はリフレッシュしません。私はinvalidateを呼び出すときに最初の線形レイアウトを表示していないことを意味します。 – naresh

0

私はこの問題を解決するのに多くの時間を費やしました。 そして私はあなただけの背景に

LinearLayout ll = (LinearLayout) findViewById(R.id.noteList); 
    ll.setBackgroundColor(getResources().getColor(R.color.transparent)); 
    ll.invalidate(); 
を設定するために呼び出す

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

とコードでstyle.xmlでtransperent色を設定しなければならないコード

の3行でリフレッシュのLinearLayoutの簡単な方法を見つけました

バックグラウンドコールバックがある場合

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

は、グラフィカルな方法での使用にはonDraw()と再計算ビューの寸法のために、高さに関連した任意のものを呼ぶのです無効として表示を更新するには、幅、余白とパディングの使用は、それがコールonMeasureは()

関連する問題