2011-01-21 9 views
0

私は、画面への表示としてtablelayoutを使用してカレンダーを作成しています。しかし、ユーザーが新しい月または年のいずれかを選択して表示を更新する必要がある場合、それはテーブルに保存されている前のデータにのみ加算されます。 HEREディスプレイはTABLELAYOUTで追加中です

私のコードです:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    //setContentView(R.layout.main); 

    table = new TableLayout(this); 

    FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(   
      ViewGroup.LayoutParams.FILL_PARENT,   
      ViewGroup.LayoutParams.FILL_PARENT); 
    table.setLayoutParams(lp); 
    table.setStretchAllColumns(true); 
    rowLp2 = new TableLayout.LayoutParams(   
      ViewGroup.LayoutParams.FILL_PARENT,   
      ViewGroup.LayoutParams.FILL_PARENT,   
      1.0f); 
    cellLp2 = new TableRow.LayoutParams(   
      ViewGroup.LayoutParams.FILL_PARENT,   
      ViewGroup.LayoutParams.FILL_PARENT,   
      1.0f); 
    // cellLp3 = new TableRow.LayoutParams(arg0, arg1) 
setYYMMDD(calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH),calendar.get(Calendar.DAY_OF_WEEK)); 
    leadGap = new GregorianCalendar(yy, mm, 1).get(Calendar.DAY_OF_WEEK) - 1; 
    //calling methods 
    header(); 
    weeks(); 
    //setLeadGap(2011, 2); 
    days(dom[mm]); 


    setContentView(table); 
} 

private void days(int noDays) 
{ 
    TableRow row = new TableRow(this); 
    int d=1; 
    nRow = (leadGap > 3) ? nRow+1 : nRow; 
    //textMonth.setText(Integer.toString(nRow)); 
    for (int r = 0; r <nRow ; ++r) 
    {  
     row = new TableRow(this); 
     if (r==0) 
      { int l = 0; 
       for (int f = 1; f<7; ++f) 
       { 
        if(l <leadGap) 
        { 
          TextView v = new TextView(this); 
          v.setText(""); 

          row.addView(v, cellLp2); 

          l++; 
        } 
        if (l == leadGap) 
        { 
         Button v = new Button(this); 
         v.setText(Integer.toString(d)); 
         row.addView(v, cellLp2); 
         d++; 
        } 
        row.setBackgroundColor(Color.rgb(55, 254, 55)); 

       } 
      } 
      else 
      { 

       for (int f = 0; f < 7; ++f)  
       { 

         if (d <= noDays) 
         { 
          //Button btn = new Button(this); 
          //btn.setText(Integer.toString(d));   
          //row.addView(btn, cellLp2); 
          Button v = new Button(this); 
          v.setText(Integer.toString(d)); 
          row.addView(v, cellLp2); 

          row.setBackgroundColor(Color.rgb(55, 254, 55)); 
          d++; 
         } 
         else 
         { 
          TextView btn = new TextView(this); 
          btn.setText("");   
          row.addView(btn, cellLp2); 

         } 


       } 
      } 
     table.addView(row, rowLp2); 
    } 

} 

private void header(){ 
    headertbl= new TableLayout(this); 
    btnMonthPos = new Button(this); 
    btnMonthPos.setOnClickListener(new View.OnClickListener() 
    {    
     public void onClick(View v) 
     { 
      if (iMonth > 10) 
      { 
       iMonth = 0; 
      } 
      else 
      { 
       iMonth += 1; 
      } 
      setLeadGap(iYear, iMonth); 
      days(dom[iMonth]); 



      textMonth.setText(months[iMonth]); 
      //recompute(); 
     } 


    }); 
textMonth = new TextView(this); 
btnMonthNeg = new Button(this); 
    btnMonthNeg.setOnClickListener(new View.OnClickListener() 
    {    
     public void onClick(View v) 
     { 
      if (iMonth < 1) 
      { 
       iMonth = 11; 
      } 
      else 
      { 
       iMonth -= 1; 
      } 
      textMonth.setText(months[iMonth]);   
     }   
    }); 
btnYearPos = new Button(this); 
    btnYearPos.setOnClickListener(new View.OnClickListener() 
    {    
     public void onClick(View v) 
     { 
      iYear += 1; 
      textYear.setText(Integer.toString(iYear)); 
      leadGap = new GregorianCalendar(yy, mm, 1).get(Calendar.DAY_OF_WEEK) - 1; 
      //sunBtn.setText(Integer.toString(leadGap)); 
     }   
    }); 
textYear = new TextView(this); 
btnYearNeg = new Button(this); 
    btnYearNeg.setOnClickListener(new View.OnClickListener() 
     {    
      public void onClick(View v) 
      { 
       iYear -= 1; 
       textYear.setText(Integer.toString(iYear));   
      }   
     }); 

//setting values during loading 
btnMonthPos.setText("++"); 
textMonth.setText(months[mm]); 
btnMonthNeg.setText("--"); 
btnYearPos.setText("++"); 
textYear.setText(Integer.toString(calendar.get(Calendar.YEAR))); 
btnYearNeg.setText("--"); 

TableRow headerRow = new TableRow(this); 
headerRow.addView(btnMonthPos, cellLp2); 
headerRow.addView(textMonth, cellLp2); 
headerRow.addView(btnMonthNeg, cellLp2); 
headerRow.addView(btnYearPos, cellLp2); 
headerRow.addView(textYear, cellLp2); 
headerRow.addView(btnYearNeg, cellLp2); 

headertbl.addView(headerRow, rowLp2); 

table.addView(headertbl); 

} 

private void weeks() 
{ 
    String[] weekName = {"Sun","Mon","Tue","Wed","Thu","Fri","Sat"}; 
    tblWeek = new TableLayout(this); 
    TableRow rowWeek = new TableRow(this); 

    for (int i = 0; i<1; i++) 
    { 
     rowWeek = new TableRow(this); 
     for (int j=0; j<weekName.length;j++) 
     { 
      TextView day = new TextView(this); 
      day.setText(" "+weekName[j]); 
      day.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT)); 
      rowWeek.addView(day, cellLp2); 
     } 
     rowWeek.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT)); 
     tblWeek.addView(rowWeek, rowLp2); 
    } 

    table.addView(tblWeek); 
} 
} 

答えて

0

が応答を感謝し、ハロー

+0

(Tablelayout)テーブルに数週間で新しい行を追加する前に、古いtablerowsを削除()日()および他の機能を考えてみましょう。私の問題は、以前のテーブル/ビューから行を削除することを知らないことです。私はremoveView(行)を使用してループを試みたが、それは私にエラーを与える。助けてください。ありがとう –

+0

私はついにそれを得ました。アイデアをありがとう。私はうまく動作する私のテーブルの最後の行を削除しました。ありがとう。再び。 –

+0

もし答えが得られたら、それを他のものの助けになるように答えてください – ingsaurabh

関連する問題