java - 在微调器中选择项目后,它没有反射(reflect)给我(肉眼不可见)

标签 java android android-linearlayout android-spinner

我正在开发一个项目,我还需要动态添加 TextViewSpinner 。我能够成功地从我的程序中动态添加这两件事。

现在,当我尝试在微调器中选择某些项目时,该项目不会显示在我的模拟器中,但我选择的项目会显示在 Toast 中。

我需要做什么才能在 Spinner 中选择该项目吗?

for (Map.Entry<String, String> entry : mapColumns.entrySet()) {

    spinnerArray = new ArrayList<String>();

    final TextView rowTextView = new TextView(cont);
    final Spinner spinner = new Spinner(cont);

    rowTextView.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
    spinner.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

    for(String s: entry.getValue().split(",")) {
        System.out.println(s);
        s = s.replaceAll("[^a-zA-Z0-9]+","");

        spinnerArray.add(s);
    }

    ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(cont, android.R.layout.simple_spinner_dropdown_item, spinnerArray);

    rowTextView.setText(entry.getKey());
    rowTextView.setTypeface(null, Typeface.BOLD);
    spinner.setAdapter(spinnerArrayAdapter);

    // add the listener
    spinner.setOnItemSelectedListener(new CustomOnItemSelectedListener());

    layout.addView(rowTextView);
    layout.addView(spinner);
}

class CustomOnItemSelectedListener implements OnItemSelectedListener {

    public void onItemSelected(AdapterView<?> parent, View view, int pos,
            long id) {
        Toast.makeText(
                parent.getContext(),
                "OnItemSelectedListener : "
                + parent.getItemAtPosition(pos).toString(),
                Toast.LENGTH_SHORT).show();
    }

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

下面是我的 XML 布局-

<?xml version="1.0" encoding="utf-8"?>
    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >

        <LinearLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/llayout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical" >

            <Button
                android:id="@+id/button1"
                android:layout_width="100px"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical|center_horizontal|center"
                android:gravity="center_vertical|center_horizontal"
                android:text="Save" />

        </LinearLayout>

    </ScrollView>

这里mapColumns将是键值对。因此,在微调器中,所有项目都会根据该 map 的值显示。

问题陈述:-

现在我需要确保如果有人在微调器中选择任何项目,则该项目应该被选中并且对其他人可见。

下面是我在 Spinner 中选择了项目的图像,但它没有显示,而且 TextView 的颜色也很浅 -

enter image description here

enter image description here

最佳答案

下面用于填充 spinnerArray 的代码看起来很可疑,因为它将删除字符串中的所有字符。

for(String s: entry.getValue().split(",")) {
    ///System.out.println(s); move this print statement to below line and see what it prints in your logs
    s = s.replaceAll("[^a-zA-Z0-9]+","");
     System.out.println(s);

    spinnerArray.add(s);
}

因此,如果 spinnerArray 提供了空字符串,它将出现空微调器。我建议注释掉整个 block ,然后尝试您的应用程序,看看问题是否仍然存在。

如果您希望微调器显示选定的项目,请添加以下行:

  spinner.setSelection (0);

关于java - 在微调器中选择项目后,它没有反射(reflect)给我(肉眼不可见),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15604568/

相关文章:

java - 尝试将 Hyperledger Fabric SDK 与 Spring boot 集成时出现以下错误

java - Worklight 6 升级失控

android - 在 4.1.2 中为单个来电广播两次

android - 如何在线性布局中对齐编辑文本

Android 在 ListView 中添加 View

java - 由于 '[..]ToStringStrategy cannot be converted to [..]ToStringStrategy2',JAXB2 无法为 XSD 生成类

java - 使用 Java Trie 无法识别单词结尾。递归某处失败

android - 测试异步 RxJava 代码 - Android

android - 将 Scala 库用于 Android 应用程序

android - 如何使用 LinearLayout 均匀间隔圆形 ImageButtons