Android 微调器选择未显示
感谢您在我收到的有关旋转器问题的帮助 单击下拉箭头时,列表显示良好。但是,单击选择时,“微调器”视图仍显示为空白。所选内容的文本不会显示。有什么好处 在安卓工作室的预览中,我分配的安卓:条目显示效果良好。此处截图:() 正如你所看到的,背景是灰色的,其他的都是白色背景。所以我不认为颜色是这里的问题 我已经检查并更改了背景颜色,甚至删除了一些小部件,这样我就可以看到是否有任何东西阻止了选择的显示 除了微调器Arraylist的常规声明、创建新的arrayadapter SetDropdOnViewResource、将arrayadapter设置为微调器之外,我还需要做什么Android 微调器选择未显示,android,spinner,Android,Spinner,感谢您在我收到的有关旋转器问题的帮助 单击下拉箭头时,列表显示良好。但是,单击选择时,“微调器”视图仍显示为空白。所选内容的文本不会显示。有什么好处 在安卓工作室的预览中,我分配的安卓:条目显示效果良好。此处截图:() 正如你所看到的,背景是灰色的,其他的都是白色背景。所以我不认为颜色是这里的问题 我已经检查并更改了背景颜色,甚至删除了一些小部件,这样我就可以看到是否有任何东西阻止了选择的显示 除了微调器Arraylist的常规声明、创建新的arrayadapter SetDropdOnView
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_spinner_dropdown_item, spinnerArray);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mStoreSpinner.setAdapter(adapter);
ArrayAdapter=新的ArrayAdapter(getApplicationContext(),android.R.layout.simple\u微调器\u下拉菜单\u项,微调阵列);
setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
mStoreSpinner.setAdapter(适配器);
微调器的XML也尽可能“简单”:
<Spinner
android:id="@+id/s_spinner"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintBottom_toTopOf="@+id/recyclerord"
app:layout_constraintLeft_toRightOf="@+id/orderID"
app:layout_constraintTop_toBottomOf="@+id/header"
app:layout_constraintRight_toRightOf="@+id/ConstraintLayout"
android:visibility="visible"
android:layout_marginStart="0dp"
android:entries="@array/array_test"
>
</Spinner>
多谢各位
编辑:
这是我补充的
mStoreSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View v, int postion, long arg3) {
// TODO Auto-generated method stub
String spinnerValue= parent.getItemAtPosition(postion).toString();
Log.d(TAG, "test");
Toast.makeText(getBaseContext(), "Selected item" + spinnerValue, Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_spinner_dropdown_item, spinnerArray);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mStoreSpinner.setAdapter(adapter);
mStoreSpinner.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
@凌驾
已选择公共位置(AdapterView父视图、视图v、内部位置、长arg3){
//TODO自动生成的方法存根
字符串spinnerValue=parent.getItemAtPosition(position.toString();
日志d(标签“测试”);
Toast.makeText(getBaseContext(),“选定项”+spinnerValue,Toast.LENGTH_SHORT).show();
}
@凌驾
未选择公共无效(AdapterView arg0){
//TODO自动生成的方法存根
}
});
ArrayAdapter=新的ArrayAdapter(getApplicationContext(),android.R.layout.simple\u微调器\u下拉菜单\u项,微调阵列);
setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
mStoreSpinner.setAdapter(适配器);
我还没有实现onClickListeners——在微调器正常工作之前,它们需要在那里吗? 我想是的 向
微调器添加一个setOnItemSelectedListener
,如下所示:
mStoreSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View v,
int postion, long arg3) {
// TODO Auto-generated method stub
String spinnerValue= parent.getItemAtPosition(postion).toString();
Toast.makeText(getBaseContext(),
"Selected item" + spinnerValue,
Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
创建ArrayAdapter
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(getApplicationContext(),
spinerArray, android.R.layout.simple_spinner_item);
spinner.setAdapter(adapter);
设置适配器
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(getApplicationContext(),
spinerArray, android.R.layout.simple_spinner_item);
spinner.setAdapter(adapter);
有两种方法可以实现setOnItemSelectedListener()
实现OnItemSelectedListener
setOnItemSelectedListener(新的OnItemSelectedListener(){…}
这是工作代码,希望它能帮助您:
<Spinner
android:id="@+id/spinner"
style="?android:attr/textViewStyle"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:spinnerMode="dialog"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@color/colorBlack"
android:textColorHint="@color/colorGray"
android:textSize="@dimen/_14sdp" />
SpinnerAdapter代码:
public class SpinnerAdapter extends ArrayAdapter {
public SpinnerAdapter(@NonNull Context context, @LayoutRes int resource, @IdRes int textViewResourceId, @NonNull Object[] objects) {
super(context, resource, textViewResourceId, objects);
}
public SpinnerAdapter(@NonNull Context context, @LayoutRes int resource, @IdRes int textViewResourceId, @NonNull List objects) {
super(context, resource, textViewResourceId, objects);
}
@Override
public int getCount() {
return super.getCount();
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
View view = super.getView(position, convertView, parent);
view.setPadding(0, view.getPaddingTop(), view.getPaddingRight(), view.getPaddingBottom());
return view;
}
}
这一行spinner控件中xml中的第一个remove android:entries=“@array/array_test”,因为如果您在列表中传递适配器,那么已经有spinner控件包含arraylist用于remove它并在下面的代码中使用
List<String> spinnerArray=new ArrayList<>(); // hear you can add in any array.
spinnerArray.add("Color");
spinnerArray.add("abd");
spinnerArray.add("cde");
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_spinner_dropdown_item, spinnerArray);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
List spinnerray=new ArrayList();//听说您可以添加到任何数组中。
添加(“颜色”);
Spinnerray.添加(“abd”);
添加(“cde”);
ArrayAdapter=新的ArrayAdapter(getApplicationContext(),android.R.layout.simple\u微调器\u下拉菜单\u项,微调阵列);
setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
旋转器。设置适配器(适配器);
spinner.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView AdapterView、View视图、int i、long l){
}
@凌驾
未选择公共无效(AdapterView AdapterView){
}
});
我也有同样的问题。根据我的经验:
如果我们创建字符串类型的ArrayList,并使用ArrayAdapter绑定列表,请确保您已将ArrayList转换为字符串数组
ArrayAdapter<String> yourAdapter =
new ArrayAdapter<>(this, android.R.layout.simple_spinner_item,
yourArrayList.toArray(new String[yourArrayList.size()]));
ArrayAdapter yourAdapter=
新的ArrayAdapter(此,android.R.layout.simple\u微调器\u项,
yourArrayList.toArray(新字符串[yourArrayList.size()]);
这很有效!我还没有实现onClickListeners-在微调器正常工作之前,它们需要在那里吗?我刚刚添加了这个,但仍然不起作用。事实上,祝酒词也没有出现。请用您实现的代码编辑您的问题,看看您是否将其放在了正确的位置或位置not@HWong你得把电视机放好在SetAdapter下面的OnItemSelectedListener实际上-谢谢!我认为这是有效的。我还更改了我的“SpinNerray.add”(它从Firestore获取数据)-也可能是未初始化的字符串Firestore的一些组合。事实上,我想我可能会遇到与原始海报相同的问题,但没有出现应用程序崩溃或错误。在我的情况下,选定的选择没有出现在微调器中。一旦我事先向数组中添加简单字符串,它就会工作。任何使用ArrayList替代的示例?除了ArrayList之外,看起来与我拥有的非常相似。请查看带有自定义适配器的更新答案,您可以在其中使用Object[]或List。此答案不正确!此行需要编辑`ArrayAdapter adapter=new
ArrayAdapter(getApplicationContext()),android.R.layout.simple_spinner_dropdown_item,spinnerray);
。ArrayAdapter参数3必须是资源,而不是数组!
List<String> spinnerArray=new ArrayList<>(); // hear you can add in any array.
spinnerArray.add("Color");
spinnerArray.add("abd");
spinnerArray.add("cde");
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_spinner_dropdown_item, spinnerArray);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
ArrayAdapter<String> yourAdapter =
new ArrayAdapter<>(this, android.R.layout.simple_spinner_item,
yourArrayList.toArray(new String[yourArrayList.size()]));