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作为第一个