java - 使用不同级别的不同字符串填充 TextView

标签 java android xml textview populate

我正在制作一个问答游戏,每个级别都有一个问题的 TextView 和一个供您输入答案的文本字段。将有很多级别,所以我想知道是否有更快的解决方案,而不是大量的 Java 类和 XML 文件?

我正在考虑使用一个 Java 类来为不同的级别使用不同的字符串填充同一个 TextView。这可能吗?我想我可能必须使用数据库?

我现在的代码是这样的(XML):

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/RelativeLayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="fill_horizontal"
android:layout_margin="25dp"
android:orientation="vertical" >

<TextView
    android:id="@+id/tutorialWelcome"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:text="@string/tutorial_step_four_a"
    android:textSize="@dimen/text_size"
    android:textStyle="bold" />

<EditText
    android:id="@+id/editText1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_toLeftOf="@+id/enterButton"
    android:hint="@string/answerhere"
    android:inputType="text"
    android:textSize="@dimen/text_size" >

    <requestFocus />
</EditText>

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/tutorialWelcome"
    android:layout_centerHorizontal="true"
    android:text="@string/tutorial_step_four_b"
    android:textSize="@dimen/text_size" />

<ImageButton
    android:id="@+id/enterButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:contentDescription="@string/nextbutton"
    android:src="@drawable/ic_action_send_now" 
    style="?android:attr/borderlessButtonStyle"/>

任何帮助将不胜感激!

最佳答案

有几个选项:

  • 将您的问题存储在 strings.xml 中,然后使用 getString(R.string.id_of_question_you_want) 获取问题并稍后显示

  • 将问题存储在 SQLite 数据库中

  • 将问题存储在文件中,您将需要编写函数来读取文件

编辑:

也可以在xml中使用字符串数组,然后根据当前显示的是哪个questin,从数组中填充,eg:

  • 让您的 quesitons.xml 在其中定义您的问题数组:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <string-array name="questions_array">
            <item>Question 1 content</item>
            <item>Question 2 content</item>
            <item>Question 3 content</item>
            <item>Question 4 content</item>
        </string-array>
    </resources>
    
  • 在您的 Activity 中,您可以获取数组中的这些问题:

    Resources res = getResources();
    String[] questions = res.getStringArray(R.array.questions_array);
    
  • 然后,跟踪现在应该显示哪个问题,并从填充布局的 Activity 中的数组中获取字符串:

    int questionNumber = 5;
    
    textViewQuestion.setText(questions[questionNumber]);
    

请记住检查边界,否则如果您的 questionNumber 高于数组中的问题数,您将得到一个异常。请记住,Java 中的数组从索引 0 开始。

可能还有一些其他的...

检查 the docs有关存储数据的信息。

关于java - 使用不同级别的不同字符串填充 TextView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20613205/

相关文章:

android - 图库中的图像未拉伸(stretch)/缩放到风景中的整个屏幕

html - 奇怪的 HTML/XML 编码问题

java - 从身份验证后的 Web 获取 XML

sql-server - SQL 服务器 : How do I use modify() to alter XML data in a column with a TEXT data type

java - 是否可以在 Java 8 中执行一个惰性 groupby,返回一个流?

java - 上下文组件扫描找不到我的自定义注释 bean

android - FCM token 检索失败 RST

android - Android Studio是否会自动尝试更新库?

java - 简单的用户名和密码验证java

java - 每小时用新数据更新一次 JLabel