【问题标题】:Array of textviews not populating properly from an array文本视图数组未从数组中正确填充
【发布时间】:2019-07-18 11:51:44
【问题描述】:

我正在尝试创建 TextViewsArray ,每个都从 Array 的对象中填充,但每个 TextView 最终都会显示我输入的最后一个对象。

我已经使用

启动了 TextViews 数组
    TextView[] loanViewDisplay = new TextView[5];

在我的 onCreate 中,我有

    loanViewDisplay[0] = findViewById(R.id.loanView1);
    loanViewDisplay[1] = findViewById(R.id.loanView2);
    loanViewDisplay[2] = findViewById(R.id.loanView3);
    loanViewDisplay[3] = findViewById(R.id.loanView4);
    loanViewDisplay[4] = findViewById(R.id.loanView5);

我有一个 addNewLoan 按钮,用于启动 Intent 和 startActivityForResult。新贷款被添加到一个名为 arrayOfLoans 的数组中,程序返回到这个活动,我想在它自己的 TextView 中列出来自 arrayOfLoans 的每笔贷款。

    for(int i=0; i<listOfLoans.length; i++){
        if(arrayOfLoans[i] != null){
            loanViewDisplay[i].setText(arrayOfLoans[i].loanInformation());
        }
    }

如果我添加一笔本金为 5000 美元的贷款,那么输出是完美的

    Loan 1: Principle $5000

但如果我随后单击 addNewLoan 按钮并添加第二笔价值为 2000 美元的贷款,我的输出将变为

    Loan 2: Principle $2000
    Loan 2: Principle $2000

我知道我的数据已正确添加到 arrayOfLoans。我已将问题缩小到 TextViews 数组。感谢您的帮助

【问题讨论】:

  • 你如何填写arrayOfLoans?或者你能登录arrayOfLoans吗?也许数组中的所有字符串都是相同的。
  • 所以我原本以为这不是我的问题,但我确定当我添加新贷款时,所有贷款都会以某种方式被替换。我切换到一个 ArrayList 并在主要活动中使用 public static ArrayList listOfLoans = new ArrayList() 声明了我的 ArrayList;在另一个类别中,我使用 Loan loan = new Loan(principle, rate); 创建了一个贷款。并使用 listOfLoans.add(loan); 将其添加到 ArrayList;当我尝试循环访问贷款时,listOfLoans 的每个索引都返回相同的信息。我做错了什么?

标签: android arrays textview


【解决方案1】:

问题出在你的循环中,你不需要 loop for display name in text view 。你需要的只是你最后一个位置数组被填充的数字。

为此,首先设置i=0,然后使用下面的代码行。

if(arrayOfLoans[i] != null){
        loanViewDisplay[i].setText(arrayOfLoans[i].loanInformation());
        i++;
}

【讨论】:

  • 当我尝试这样做时,它只是将第一个 TextView 更改为数组中最后一个元素填充的任何内容。我知道它必须与 TextView 数组的声明方式有关,因为即使我根本不使用循环来尝试将文本分配给 textview,我也遇到了我在帖子中描述的相同问题。如果我做 loanViewDisplay[0].setText(arrayOfLoans[0].loanInformation()); loanViewDisplay[1].setText(arrayOfLoans[1].loanInformation());我只在两个 TextViews 中显示了第二笔贷款。
  • 然后使用数组列表。 ArrayList asd = new ArrayList(); asd.add(tv1); asd.add(tv2); asd.add(tv3); asd.add(tv4); asd.add(tv5);
猜你喜欢
  • 1970-01-01
  • 2021-07-27
  • 2012-03-19
  • 2012-02-02
  • 2021-04-29
  • 2015-09-22
  • 2022-10-01
  • 1970-01-01
  • 2011-06-29
相关资源
最近更新 更多