2014-01-17 47 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); 

      } 
     });