java - for循环中的动态变量?

标签 java android arrays

我有一个名为 Activity_main.xml 的布局,它是我的父布局,然后我在 for 循环中插入一个子布局 (activity_main_card.xml)。

我还有一个数组,我正在做的是使用数组的长度来确定它应该创建多少个子元素。我要在子元素中使用的所有数据都存储在数组中,因此想法是循环数组,为每个循环创建一个子元素并填充数据。

相反,当前正在生成 3 个(数组长度)子元素,但它仅使用数组中的最新内容填充第一个子元素。这是因为它保持变量相同。

我需要做的是以某种方式设置随着循环迭代而变化的动态变量。

我的方法的代码如下:

    for (int i = 0; i < cardArray.length; i++) {
        LinearLayout item = (LinearLayout)findViewById(R.id.card_holder);
        View child = getLayoutInflater().inflate(R.layout.activity_main_card, item, false);
        item.addView(child);

        //Set objects from array to variables
        String cardTitle = cardArray[i][0];
        String cardContent = cardArray[i][1];
        String cardImage = cardArray[i][2];

        //Set XML elements to variables
        TextView title = (TextView) findViewById(R.id.card_title);
        TextView content = (TextView) findViewById(R.id.card_content);
        ImageView image = (ImageView) findViewById(R.id.card_image);

        //Load variable content into card layout
        title.setText(cardTitle);
        content.setText(cardContent);
        image.setImageDrawable(getResources().getDrawable(getResources().getIdentifier("drawable/" + cardImage, "drawable", getPackageName())));
        }

我认为我可以做的是将 View 设置为:

TextView title[i] = (TextView) findViewById(R.id.card_title); 

但是这不起作用。有谁知道我怎样才能实现这个目标?

最佳答案

您需要获取对刚刚创建的当前View 的引用,然后填充该View 上的TextView 元素。这可以通过这样做来实现:

TextView title = (TextView) child.findViewById(R.id.card_title);
TextView content = (TextView) child.findViewById(R.id.card_content);
ImageView image = (ImageView) child.findViewById(R.id.card_image);

但是,您可能最好以不同的方式解决此问题,正如 Jonathan 建议的 ListView 和适配器可能更适合这种情况。

关于java - for循环中的动态变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25654274/

相关文章:

java - Maven 原型(prototype) : How to add more than one archetype in same maven-plugin?

java - 将文件添加到 ZIP 文件

Android Studio 不创建新项目

android - 分享消息后从whatsapp回调

Javascript 数组查找对象或元组

c# - 如何按相同索引对两个数组进行排序?

java - 将快捷方式添加到插件中定义的快捷方式 Eclipse 操作

java - Quartz 的 CronTrigger 每 24 小时一次,例如 - 午夜

android - 从 AsyncTaskLoader 更新进度条?

java - java中的返回类型[]double问题