Android如何通过单击按钮更改Textview的数据

时间:2014-01-17 17:57:06

标签: java android android-layout sdk

首先,应用程序看起来像这样。

App design

如何制作 - 如果我点击添加,在其列上文本视图将更新为值+ 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是水平方向的,而在循环中创建的是垂直线性布局。

也许我应该为1循环迭代创建一个模板?

5 个答案:

答案 0 :(得分: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 :(得分:1)

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

我的坏我甚至没有注意到它是一个for循环呃你需要保持对文本视图的引用..让你的textview最终

答案 2 :(得分:1)

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

但是,我强烈建议您在* .xml文件中设计UI(布局)! 查看更多:http://developer.android.com/guide/topics/ui/declaring-layout.html

答案 3 :(得分: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());

没试过,但应该有用。

答案 4 :(得分: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);

            }
        });