【问题标题】:For loops print only last valueFor 循环仅打印最后一个值
【发布时间】:2021-05-30 16:06:02
【问题描述】:

我要打印的列表中有 TextView。在按钮的帮助下

我是这样定义的

private TextView Question,optionA,optionB,optionC,optionD;

viewAnsB.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

        setContentView(R.layout.view_answer);
        Question= (TextView)findViewById(R.id.Question);
        optionA=findViewById(R.id.AOption);
        optionB=findViewById(R.id.BOption);
        optionC=findViewById(R.id.COption);
        optionD=findViewById(R.id.DOption);
   for (int i=0 ; i < DbQuery.g_quesList.size(); i++) {
    
  Question.setText(DbQuery.g_quesList.get(i).getQuestion());
   optionA.setText(DbQuery.g_quesList.get(i).getOptionA());
   optionB.setText(DbQuery.g_quesList.get(i).getOptionB());
  optionC.setText(DbQuery.g_quesList.get(i).getOptionC());
   optionD.setText(DbQuery.g_quesList.get(i).getOptionD());
      }
    }

  }

它只打印最后一个值 DbQuery.g_quesList 我想在我的布局文件我的布局 XML 文件中打印 DbQuery.g_quesList 的所有值

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
 android:layout_margin="10dp"
    android:orientation="vertical">
  
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="8dp"
        android:padding="8dp"
        android:id="@+id/Question"
        android:gravity="center"
        android:textColor="@color/black"
        android:textSize="18sp"


        android:text="question1"
        android:textStyle="normal"
        android:scrollbars="vertical"

        android:inputType="textMultiLine|textNoSuggestions"
        android:elevation="5dp"
        android:translationZ="3dp"
        tools:ignore="TextViewEdits"/>
   
</LinearLayout>
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_margin="10dp">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        android:id="@+id/AOption"
        android:text="@string/opettion1"
        android:textSize="14sp"
        android:gravity="center"

        android:textStyle="bold"
        android:textColor="@color/black">

    </TextView>

</LinearLayout>
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_margin="10dp">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        android:id="@+id/BOption"
        android:text="@string/opettion1"
        android:textSize="14sp"
        android:gravity="center"

        android:textStyle="bold"
        android:textColor="@color/black">

    </TextView>
   

</LinearLayout>
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_margin="10dp">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        android:id="@+id/COption"
        android:text="@string/opettion1"
        android:textSize="14sp"
        android:gravity="center"

        android:textStyle="bold"
        android:textColor="@color/black">

    </TextView>
 

</LinearLayout>
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_margin="10dp">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        android:id="@+id/DOption"
        android:text="@string/opettion1"
        android:textSize="14sp"
        android:gravity="center"

        android:textStyle="bold"
        android:textColor="@color/black">

    </TextView>
   

</LinearLayout>
  

如果我做错了,那么建议我用野兽方法打印列表的所有值

【问题讨论】:

  • 您想将所有值添加到特定的 `TextView' 中吗?
  • 不,我想在各自的 TextView 中分别打印所有值

标签: java android


【解决方案1】:

这是因为,您正在使用 for 循环迭代所有问题和答案。 如果i = 0,它会将问题和答案打印到相应的文本视图中。 下一个i 将是 1,然后它将所有文本视图替换为下一个问题及其选项。 等等。 最后,for 循环到达最后一个问题,并显示问题和选项。

所以,你不应该在那个地方使用 for 循环。

【讨论】:

  • 我可以做些什么来打印值
  • 我不确定,你真正想要实现什么。假设你有 10 个问题,每个问题有 4 个选项。您有一个屏幕,其中有 5 个文本视图,1 个用于问题,4 个用于答案。因此,如果您想同时在这 5 个文本视图中显示所有问题,这是不可能的。您必须一一显示它们......或者您必须制作许多文本视图来显示所有问题和答案。如果您只有 5 个文本视图,则必须显示一个问题及其选项,然后单击按钮或选择一个答案,您可以使用相同的文本视图显示下一个问题
  • 我想打印所有的问题和选项。在这里用户查看他尝试了哪个问题,正确答案,用户给出的错误答案
【解决方案2】:

在您的layout.xml 文件中,问题和每个选项只有一个TextView 组件,这意味着您一次只能显示一个问题。

因此,在您的 for 循环中,由于单个问题只有一组 TextView,因此每次循环运行时,它都会覆盖之前存在的所有内容,这就是为什么您只看到最后一个问题的原因。

您需要一种在屏幕上显示layout.xml 的多个副本的方法,每个副本具有不同的问题和选项值。

我建议您查看 Android 中的 Fragments,因为它们非常适合这种情况。

另一种选择是在 Android 中使用 ListView 并为列表中的每个条目使用自定义布局 - 此自定义布局类似于您当前在 layout.xml 中的布局

查看here 以获取有关ListView 方法的说明。

【讨论】:

    猜你喜欢
    • 2017-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    • 2022-06-15
    • 2022-01-23
    • 1970-01-01
    • 2022-01-11
    相关资源
    最近更新 更多