繁体   English   中英

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

[英]Android How to change data of Textview by clicking on button

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

应用程式设计

如何制作-如果我单击“添加”,则其列上的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是水平方向的,而在一个循环内创建的则是垂直的Linear Layouts。

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

首先将您的文本视图定为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));
                 }
             });
}

您可以编写一个返回线性布局的函数:

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;
}

循环调用此函数。

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

我的糟糕,我什至没有注意到这是一个for循环,您需要持有对文本视图的引用。

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

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

您应该为您的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());

没有尝试过,但应该可以。

static int counter = 0;

    btn_Add.setOnClickListener(new View.OnClickListener() {

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

            }
        });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM