Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android如何通过点击按钮更改Textview的数据_Java_Android_Android Layout_Sdk - Fatal编程技术网

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

Java Android如何通过点击按钮更改Textview的数据,java,android,android-layout,sdk,Java,Android,Android Layout,Sdk,首先,这个应用程序看起来像这样 如何制作-如果我单击Add,在其列上的textview将更新为值+1 我在循环中创建文本视图和按钮 for(int i = 0;i < playercountint; i++) { LinearLayout layout = new LinearLayout(this); layout.setOrientation(LinearLayout.VERTICAL); layout.setLayoutParams(

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

如何制作-如果我单击Add,在其列上的textview将更新为值+1

我在循环中创建文本视图和按钮

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?
                 }
             });
}
for(int i=0;i
在onClick函数中应该写入什么,所以只更改按钮列中的TextView值

有一个水平方向的外部线性布局,在回路中创建的是垂直线性布局

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

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

糟糕的是,我甚至没有注意到这是一个for循环,呃,你需要保留对文本视图的引用。。使您的文本视图成为最终的

首先使您的文本视图成为最终的
,然后他们在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));
                 }
             });
}
在循环中调用此函数

tt.setText(Integer.parse(tt.getText().toString()) + 1);
但是,我强烈建议您在*.xml文件中设计UI(布局)!
查看更多信息:

您应该为
文本视图提供唯一的
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());

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

我相信在将文本视图放入onClick函数之前,必须先将其设置为final。我想你不能只喜欢引用以前创建的对象,而是需要找到它。说明资源路径位置类型不能引用在不同方法中定义的内部类中的非最终变量tt是的,但我的布局取决于playercount,有什么建议吗?我是Android DevelopingIntegrater.parseInt(…)的新手;这不起作用,因为tt.setText()需要字符串的资源id。您必须设置字符串instead@waplet:没问题,玩家数量在UI中没有生效,只是数据。下面是适用于您的情况的算法:首先,您通过tt.getText().toString()获取当前数字,然后通过Integer.parseInt(String str)将其转换为int,将其加进去,然后是tt.setText(String.valueof(int int))*提示:如果您使用eclipse,请键入Ctrl+space以获得有关代码的建议。格卢克!
static int counter = 0;

    btn_Add.setOnClickListener(new View.OnClickListener() {

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

            }
        });
static int counter = 0;

    btn_Add.setOnClickListener(new View.OnClickListener() {

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

            }
        });