for循环跳转到java android开发中的最后一个数字

时间:2016-03-07 15:30:24

标签: java android database for-loop logic

您好我正在制作一个Android应用程序,我想在数据库中添加一些值,我想做N次,所以我使用了一个for循环,如下所示:

private void addCodeToDataBase() {

    for (int i = 1; i <= 100; i++) {
        //indexnumber is a TextView
        indexNumber.setText("Please enter the TAN code for Index number " + i);
        //tanCode is an EditText
        if (tanCode.getText().toString() != null) {
        //index here is just an int so i can use the i inside the onClick
            index = i;
         //add is a button
            add.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    String codeText = tanCode.getText().toString();
                    dbHandler.addcode(index, codeText);
                }
            });

        } else {
            Toast.makeText(addcode.this, "Please enter your code !!!", Toast.LENGTH_LONG).show();
        }
    }
}

但我在这里遇到的是第一次运行时for循环跳转到100,我的意思是文本会显示:

  

请输入索引编号100的TAN代码

它跳过99个数字!!我该如何解决?

3 个答案:

答案 0 :(得分:0)

这是因为你的for循环执行得如此之快以至于你无法注意到text.First i的变化为0,然后它变为1,那么文本将是“请输入索引号1的TAN代码“......

答案 1 :(得分:0)

你的循环工作正常,但是它正在替换每次迭代的文本,这就是为什么你认为它跳过最后一个值请使用断点和调试你会在每次迭代中看到每个值或使用登录你会看到每个值

答案 2 :(得分:0)

如果没有看到indexNumbertanCodeindex,特别是add的声明,就很难想象你的代码会做什么。因此,例如,我们不知道您的if条件产生的频率是多少。

然而,最有可能的问题是,您的作业add.setOnClickListener(...)只是迭代而中间没有用户交互。现在,如果你反复为你的add分配一些东西(无论是什么),最后的任务就会胜出。

如果你想要100个按钮,你需要按下一个阵列或按钮列表,每个按钮都有不同的棕褐色代码。如果你想要一个按钮反复询问不同的tans,那么只有在点击i处理后,你才必须为点击i + 1分配数据,即在点击监听器中。

为了提供更具体的帮助,我们需要知道您的用户界面应该如何显示(有多少小部件是什么类型)以及每个小部件的行为方式。