2014-01-17 191 views
-1

更改Textview的數據首先,該應用程序看起來像這樣。Android如何通過點擊按鈕

App design

如何讓 - 如果我點擊添加,在其列TextView的與值+ 1更新?

我在循環中創建TextView和Button;

for(int i = 0;i < playercountint; i++) 
{ 
LinearLayout layout = new LinearLayout(this); 
      layout.setOrientation(LinearLayout.VERTICAL); 
      layout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT,(100/playercountint))); 
      layout.setGravity(Gravity.CENTER_HORIZONTAL); 
TextView tt = new TextView(this); 
      tt.setText("0"); 
      tt.setTextSize(14); 
      tt.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
      tt.setGravity(Gravity.CENTER_HORIZONTAL); 


      Button btadd = new Button(this); 
      btadd.setText("Add"); 
      btadd.setId(2); 


      btadd.setOnClickListener(new View.OnClickListener() { 
       public void onClick(View v) { 
        ????? what here? 
       } 
      }); 
} 

我應該在的onClick功能,所以只有TextView的值,它是在按鈕欄更改寫入。

有一個外部LinearLayout是水平方向的,而在一個循環內創建的是LinearLayout。

也許我應該創建一個循環迭代模板?

回答

1
tt.setText("something"); 
tt.invalidate(); 

我不好我甚至沒有注意到這是一個循環呃,你需要堅持文本視圖參考..讓你的TextView最終

+1

我相信你必須在將它放入onClick函數之前製作textView final。 – AnxGotta

+0

我想你不能只喜歡引用之前創建的對象,但不知何故需要找到它。 說明\t資源\t路徑\t位置\t類型 不能引用非最終變量TT在不同的方法定義的內部類中 – waplet

2

首先讓你的TextView final並設置它的在的onClick

for(int i = 0;i < playercountint; i++) 
{ 
LinearLayout layout = new LinearLayout(this); 
      layout.setOrientation(LinearLayout.VERTICAL); 
      layout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT,(100/playercountint))); 
      layout.setGravity(Gravity.CENTER_HORIZONTAL); 
final TextView tt = new TextView(this); 
      tt.setText("0"); 
      tt.setTextSize(14); 
      tt.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
      tt.setGravity(Gravity.CENTER_HORIZONTAL); 


      Button btadd = new Button(this); 
      btadd.setText("Add"); 
      btadd.setId(2); 


      btadd.setOnClickListener(new View.OnClickListener() { 
       public void onClick(View v) { 
        tt.setText(String.valueOf(Integer.parseInt(tt.getText())+1)); 
       } 
      }); 
} 

值您可以編寫一個函數,返回的LinearLayout:

public View getPlayerView(){ 
    LinearLayout layout = new LinearLayout(this); 
       layout.setOrientation(LinearLayout.VERTICAL); 
       layout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT,(100/playercountint))); 
       layout.setGravity(Gravity.CENTER_HORIZONTAL); 
    final TextView tt = new TextView(this); 
       tt.setText("0"); 
       tt.setTextSize(14); 
       tt.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
       tt.setGravity(Gravity.CENTER_HORIZONTAL); 


       Button btadd = new Button(this); 
       btadd.setText("Add"); 
       btadd.setId(2); 


       btadd.setOnClickListener(new View.OnClickListener() { 
        public void onClick(View v) { 
         tt.setText(String.valueOf(Integer.parseInt(tt.getText())+1)); 
        } 
       }); 
      layout.add(tt); 
      layout.add(btadd); 
    return layout; 
} 

在循環中調用此函數。

1
tt.setText(Integer.parse(tt.getText().toString()) + 1); 

但是,我強烈建議你在* .xml文件中設計UI(佈局)! 查看更多:http://developer.android.com/guide/topics/ui/declaring-layout.html

+0

是的,但我的佈局取決於playercount,有什麼建議? 我是Android Developping的新手 – waplet

+0

Integer.parseInt(...); – waplet

+0

這不會工作,因爲tt.setText()需要字符串的資源ID。你必須設置字符串 –

0

您應該提供您的TextView有獨特id(.setId(...))。有了這個,你onClick方法簡單地使用這樣的:

final TextView tv = (TextView) findViewById(R.id.your_textview_id); 
final String cur_text = tv.getText(); 
Integer plus_one = Integer.valueOf(cur_text); 
plus_one++; 
tv.setText(plus_one.toString()); 

沒有嘗試,但應該工作。

0
static int counter = 0; 

    btn_Add.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       counter ++; 
      tv_Display.setText("Your Total is : " + counter); 

      } 
     });