Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 微调器选择未显示_Android_Spinner - Fatal编程技术网

Android 微调器选择未显示

Android 微调器选择未显示,android,spinner,Android,Spinner,感谢您在我收到的有关旋转器问题的帮助 单击下拉箭头时,列表显示良好。但是,单击选择时,“微调器”视图仍显示为空白。所选内容的文本不会显示。有什么好处 在安卓工作室的预览中,我分配的安卓:条目显示效果良好。此处截图:() 正如你所看到的,背景是灰色的,其他的都是白色背景。所以我不认为颜色是这里的问题 我已经检查并更改了背景颜色,甚至删除了一些小部件,这样我就可以看到是否有任何东西阻止了选择的显示 除了微调器Arraylist的常规声明、创建新的arrayadapter SetDropdOnView

感谢您在我收到的有关旋转器问题的帮助

单击下拉箭头时,列表显示良好。但是,单击选择时,“微调器”视图仍显示为空白。所选内容的文本不会显示。有什么好处

在安卓工作室的预览中,我分配的安卓:条目显示效果良好。此处截图:()

正如你所看到的,背景是灰色的,其他的都是白色背景。所以我不认为颜色是这里的问题

我已经检查并更改了背景颜色,甚至删除了一些小部件,这样我就可以看到是否有任何东西阻止了选择的显示

除了微调器Arraylist的常规声明、创建新的arrayadapter SetDropdOnViewResource、将arrayadapter设置为微调器之外,我还需要做什么

    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()]));