Java 在微调器中选择项目后,它不会向我反射(肉眼看不到)

Java 在微调器中选择项目后,它不会向我反射(肉眼看不到),java,android,android-linearlayout,android-spinner,Java,Android,Android Linearlayout,Android Spinner,我正在做一个项目,我需要动态添加TextView和Spinner。我能够从我的程序中成功地动态添加这两个东西 现在,当我尝试在微调器中选择一些项目时,这些项目不会显示在我的模拟器中,但我选择的项目会显示在Toast中 我需要做些什么才能在微调器中选择该项吗 for (Map.Entry<String, String> entry : mapColumns.entrySet()) { spinnerArray = new ArrayList<String>();

我正在做一个项目,我需要动态添加
TextView
Spinner
。我能够从我的程序中成功地动态添加这两个东西

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

我需要做些什么才能在
微调器中选择该项吗

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
    }
}
for(Map.Entry:mapColumns.entrySet()){
SpinneArray=新的ArrayList();
最终文本视图行文本视图=新文本视图(续);
最终微调器=新微调器(续);
rowTextView.setLayoutParams(新的LayoutParams(LayoutParams.WRAP_内容,LayoutParams.WRAP_内容));
spinner.setLayoutParams(新的LayoutParams(LayoutParams.WRAP_内容,LayoutParams.WRAP_内容));
对于(字符串s:entry.getValue().split(“,”)){
系统输出打印项次;
s=s.replaceAll(“[^a-zA-Z0-9]+”,”);
spinnerray.add(s);
}
ArrayAdapter SpinnerayAdapter=新的ArrayAdapter(cont,android.R.layout.simple\u spinner\u dropdown\u项,Spinnerary);
rowTextView.setText(entry.getKey());
rowTextView.setTypeface(null,Typeface.BOLD);
spinner.setAdapter(SpinNearrayaAdapter);
//添加侦听器
spinner.setOnItemSelectedListener(新的CustomOnItemSelectedListener());
layout.addView(rowTextView);
layout.addView(微调器);
}
类CustomOnItemSelectedListener实现OnItemSelectedListener{
已选择公共视图(AdapterView父视图、视图、int pos、,
长id){
Toast.makeText(
parent.getContext(),
“MSelectedListener:”
+parent.getItemAtPosition(pos.toString(),
吐司。长度(短)。show();
}
@凌驾
未选择公共无效(AdapterView arg0){
//TODO自动生成的方法存根
}
}
下面是我的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
将显示键值对。因此,在微调器中,所有项目都将从该贴图的值中显示

问题陈述:-

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

下面是我在
微调器中选择项目的图像,但它没有显示,而且
文本视图的颜色也很浅-


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

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);
}
因此,如果SpinneArray提供了空字符串,它将提供空微调器。我建议你把整个区块都注释掉,然后试试你的应用程序,看看问题是否依然存在

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

  spinner.setSelection (0);

不,那不是问题。我测试过了。正如我在问题中所说。Toast向我显示我选择的项目。我附加了另一个图像,这将使事情变得清晰。setSelection(int-position)方法我认为,如果希望微调器显示选定的初始项,则需要使用该方法。我假设您单击微调器后可以看到项目列表?我向下滚动光标,然后可以看到在每个微调器中选择的项目。在我的情况下,如何获取索引?你能提供我在这里可以使用的确切代码吗?由于我在这里感到困惑,我应该把这一行放在哪里以及如何获取索引。我已经编辑了我的答案以反映微调器。setSelection(0)尝试选择0作为第一个