java - Android - 定义微调器中显示的值(与所选值不同)

标签 java android spinner

我有一个微调器,其中包含显示在 2 行中的动态数据。我需要帮助的是在微调器文本框中仅显示部分微调器值 (ItemArrayName[i])。

要在单击微调器时在弹出窗口中进行校准,我需要完整的文本,但是当选择该项目时,我只需要项目名称。

例如 在应用程序内: 商品名称

在弹出的微调器选择中: 项目名 攻击力 = 10,防御力 = 10

Java Code:

ArrayList<String> ItemArrayList = new ArrayList<String>();  
for(int i = 0; i < ItemArrayName.length; i++)
{
    ItemArrayList.add(ItemArrayName[i] + "\nAtk = " + String.valueOf(ItemArrayAtk[i]) + ", Def = " + String.valueOf(ItemArrayDef[i]));
}

Spinner spnItem = (Spinner) view.findViewById(R.id.UseItem);
ArrayAdapter<String> adpItem = new ArrayAdapter<String> (context, R.layout.spinnerrow, ItemArrayList);
spnItem.setAdapter(adpItem);
spnItem.setOnItemSelectedListener(new OnItemSelectedListener() 
{   
    public void onItemSelected(AdapterView<?> parent, View view, int position, long arg3) 
    {
        //String city = "The item is " + parent.getItemAtPosition(position).toString();
        //Toast.makeText(parent.getContext(), city, Toast.LENGTH_LONG).show();
    }

    public void onNothingSelected(AdapterView<?> arg0)
    {
        // TODO Auto-generated method stub
    }
});

提前致谢

最佳答案

如何使用哈希表将微调器中显示的内容映射到更详细的弹出字符串?

编辑: 这是使用哈希表对代码进行的原始且可能无法编译的修改,如下所示:

// EDIT #1: Create a hashtable to lookup stuff:
final Hashtable<String, String> vals = new Hashtable<String, String>();

      for(int i = 0; i < ItemArrayName.length; i++)
      {
         vals.put(ItemArrayName[i], ItemArrayName[i] + "\nAtk = " + String.valueOf(ItemArrayAtk[i]) + ", Def = " + String.valueOf(ItemArrayDef[i]));
      }

      Spinner spnItem = (Spinner) view.findViewById(R.id.UseItem);
      // EDIT #2: Extract the array of hash keys to show in your list:
      ArrayAdapter<String> adpItem = new ArrayAdapter<String> context, R.layout.spinnerrow, vals.keySet().toArray(new String[vals.size()]));
      spnItem.setAdapter(adpItem);
      spnItem.setOnItemSelectedListener(new OnItemSelectedListener()
      {
         public void onItemSelected(AdapterView<?> parent, View view, int position, long arg3)
         {
            // EDIT #3: retrieve the full string from the hashtable using "get":
            String city = "The item is " + vals.get(parent.getItemAtPosition(position).toString());
            //Toast.makeText(parent.getContext(), city, Toast.LENGTH_LONG).show();
         }

         public void onNothingSelected(AdapterView<?> arg0)
         {
            // TODO Auto-generated method stub
         }
      });

关于java - Android - 定义微调器中显示的值(与所选值不同),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11868297/

相关文章:

Android:如何更改 onItemSelected 事件的微调器背景

android - 在Android中创建声音检测应用

java - Maven 3 JavaDoc 插件与 TestNG 组冲突

java - Maven 在 jenkins 上使用错误的 JDK 构建

java - 使用 java8 stream api 时类型丢失

android - 在带 Remote 的 Android 电视中无法选择和单击动态 TextView

android - Logback-Android : "no applicable action" error when using FixedWindowRollingPolicy with a SizeBasedTriggeringPolicy

java - 如何在 Android (Java) 中添加微调器验证

javascript - 如何设置 jQuery 微调器的最大值和最小值?

java - JHipster 如何在文件系统中保存文件?