java - 动态使用名称与其他数组中的值匹配的数组

标签 java android arrays xml string

我会尽力解释我想要实现的目标; 我觉得如果我能解释得更好我就不需要问了。

我想从微调器中选择项目,单击 4 个按钮之一将微调器值(数组值“药物”)发送到下一个 Activity 。

“药物”中的值将有自己的字符串数组。

例如。

在“药物”中有一个值 ENALAPRIL。

有一个字符串数组“ENALAPRIL”,有 4 个值,

HowString[0]

WhatString 1

当字符串[2]

非字符串[3]

在 Activity2 中只有两个 TextView 框。

顶部 TextView 用于显示从微调器中选择的药物名称

我可以毫无问题地做到这一点

底部的 TextView 用于显示如何、什么、何时或不字符串 - 取决于按下哪个按钮来访问 Activity2。

我需要底部 TextView 动态使用通过 Intent 传递的 StringArray 值:

选择的“药物”值(TextView1)需要动态地等于(TextView2)中使用的数组值的名称。

我正在努力了解上下文以及如何表达我的需求,所以抱歉。

我希望我把一些非常非常简单的事情变得过于复杂了。

Activity1 布局:

<Spinner
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/rxBox"
    android:prompt="@string/rxprompt"
    android:entries="@array/Medications"
    android:focusable="true"
    android:clickable="true"
    android:visibility="visible"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:textAlignment="center"
    android:spinnerMode="dialog"
    android:layout_centerHorizontal="true"
    android:background="@drawable/abc_search_dropdown_dark"
    android:popupBackground="@drawable/abc_ab_solid_light_holo"
    android:layout_below="@+id/helprx" />

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:text="@string/rxstudyinfo"
    android:id="@+id/helprx"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"

    android:textStyle="bold"
    android:paddingStart="10dp"
    android:visibility="visible"
    android:textSize="20dp"
    android:lines="5" />

<LinearLayout
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_alignParentEnd="true"
    android:paddingTop="50dp"
    android:divider="@drawable/abc_ab_share_pack_holo_dark"
    android:visibility="visible"
    android:layout_below="@+id/rxBox">

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/dosing"
        android:id="@+id/doseButton"
        android:layout_gravity="center_horizontal"
        android:clickable="true"
        android:enabled="true"
        android:onClick="howRx" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/what"
        android:id="@+id/whatButton"
        android:clickable="true"
        android:enabled="true"
        android:onClick="whatRX" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/whenButton"
        android:layout_gravity="center_horizontal"
        android:text="@string/when"
        android:clickable="true"
        android:enabled="true"
        android:onClick="whenRX" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/not"
        android:id="@+id/notButton"
        android:clickable="true"
        android:enabled="true"
        android:onClick="notRX" />

</LinearLayout>
<小时/>

Activity 2布局:

    <TextView
        android:text="MEDICATION NAME"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textAlignment="center"
        android:textSize="35dp"
        android:id="@+id/rxName"
        android:paddingBottom="35dp" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="MEDICATION INFO"
        android:id="@+id/infoRx" />
 </LinearLayout>
<小时/> <小时/>

代码: Activity 1

public class studyRX extends ActionBarActivity {




public void howRx(View view){


    Spinner medChoice = (Spinner) findViewById(R.id.rxBox);
    Intent howRxIntent = new Intent(getApplicationContext(),rxViewer.class);
    Bundle b = new Bundle();
    b.putString("medname",medChoice.getSelectedItem().toString());



    howRxIntent.putExtras(b);

    startActivity(howRxIntent);

    //array index 0
}
<小时/>

代码: Activity 2

public class rxViewer extends ActionBarActivity {



@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_rx_viewer);

    Bundle b = this.getIntent().getExtras();
    Resources r = getResources();
    String medname = b.getString("medname");


    ((TextView)findViewById(R.id.rxName)).setText(medname);

    // myString = getResources().getIdentifier(medname,"string",this.getPackageName());
    //((TextView)findViewById(R.id.infoRx)).setText(bang);
    //TextView t = (TextView)findViewById(R.id.infoRx);
    //int maybe = getResources().getIdentifier(bang,"arrays",this.getPackageName());

    Intent intentObject = getIntent();

}
<小时/>

XML:药物

<string-array name="Medications">
    <item>Enalapril</item>
    <item>Captopril</item>
    <item>Lisinopril</item>
    <item>Ramipril</item>
    <item>Adenosine</item>
    <item>Amiodarone</item>
</string-array>
<小时/>

XML:依那普利

<string-array name="Enalapril">
    <item> String from HOW Button  </item>
    <item> String from WHAT Button </item>
    <item> String from WHEN Button </item>
    <item> String from NOT  Button </item>
 </string-array>
<小时/>

XML:卡托普利

<string-array name="Captopril">
    <item> String from HOW Button  </item>
    <item> String from WHAT Button </item>
    <item> String from WHEN Button </item>
    <item> String from NOT  Button </item>
</string-array>
<小时/>

所有药物的格式相同,因此数组索引将与每个按钮相关

谢谢!

最佳答案

根据我的阅读和理解,您的问题是单击一个按钮并根据按下的按钮以及在另一个 Activity 上选择微调器相应地在下一个 Activity 上显示答案。

所以,首先,从我的角度来看,你最好有这样的类(class):

public class Medication { 
      String name; //name of you medication
      ArrayList<String> answers; //answers which you initialize by the order you want  

      public Medication (String name, ArrayList<String> answers) { 
            this.name = name;
            this.answers = answers;
      }

      public boolean isThisMedication(String name){
            if (this.name.equals(name))
               return true;
            return false;
      }

      public String getAnswer(int position) {
            return answers.get(position);
      }
}

您应该初始化此类的对象列表,例如 ArrayList<Medication>在您的Activity 2上.

然后,每当您单击某个按钮时,您还必须在 bundle 中发送该特定按钮文本中的字符串或 0 到 3 之间的数字(0 是您的第一个按钮,3 是您的最后一个数字)。关于OnClickListener您的按钮应该能够毫无问题地执行此操作。

就是这个了!一切就绪!

此外,您应该看到此链接 Get StringArray Item Name如果您确实不想使用像我提到的那样的类,请了解如何使用 StringArray。

希望这有帮助。

关于java - 动态使用名称与其他数组中的值匹配的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24644065/

相关文章:

java - 修改线程内的父类变量

android - Firebase DB 无法显示查询的对象列表

python - Numpy 数组排除一些元素

java - 如何将Gradle项目编译为可以在Android应用程序中使用的jar文件

java - 在 404 和 500 Http 错误 Spring MVC 上发送电子邮件或记录错误

java - AES加密后的Hex.encodeHexString?

java - JOOQ 代码生成器跳过包含 JsonNode 字段的类

jQuery:从数组中选择元素

c - 使用结构读取文件时出现问题

java - 如何在 Java 中填充数组?