【问题标题】:I Cant select from spinner我无法从微调器中选择
【发布时间】:2017-12-06 08:56:07
【问题描述】:

单击微调器中的项目后,未选择任何内容。

    public  void getSpinnerItems(){


    StringRequest stringRequest = new StringRequest(Request.Method.POST,ToolsUtils.STOP_CODE_URL,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {


                    try {


                        JSONArray jsonArray = new JSONArray(response);
                        JSONObject jsonObject=new JSONObject();
                        for(int i=0;i<jsonArray.length();i++) {
                             jsonObject=jsonArray.getJSONObject(i);
                            String s=jsonObject.getString("stopDesc");
                            eque_array.add(s);
                        }


                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    //displaying the error in toast if occurrs
                    error.printStackTrace();
                    Toast.makeText(getApplicationContext(), error.getMessage(), Toast.LENGTH_SHORT).show();
                }
            });

//创建请求队列 RequestQueue requestQueue = Volley.newRequestQueue(this);

//将字符串请求加入请求队列 requestQueue.add(stringRequest);

//填充微调器

    ArrayAdapter<String> arr=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_dropdown_item,eque_array);
    spinner.setAdapter(arr);
}

我用这个监听器返回选中的项目

 spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

         String   selected_item =spinner.getItemAtPosition( position).toString();
            ((TextView) view).setTextColor(Color.RED);
           validator.setText(spinner);
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {
            stop_code="nothing" ;
            validator.setText(spinner );
        }
    });

我点击了 itme 但它没有返回任何东西。

【问题讨论】:

  • 你在哪里设置适配器? onCreate?
  • String selected_item =spinner.getSelectedItem().toString(); 的同样问题??
  • 是的,我试试这个,没有任何改变:(
  • 当我将项目添加到列表 eque_array 但当我使用 json 数据时它不起作用
  • 你看不到在 UI 中选择的数据,意味着在验证器 textView 中?

标签: android android-spinner


【解决方案1】:

你可以试试这个 首先在您的布局 xml 中创建微调器,例如

                    <Spinner
                        android:id="@+id/spinner"
                        android:layout_width="fill_parent"
                        android:layout_height="48dp"
                        android:background="@drawable/border"
                        android:dropDownVerticalOffset="50dp"
                        android:gravity="center_vertical"
                        android:padding="3dp"
                        android:prompt="@string/country_prompt"
                        android:spinnerMode="dropdown" />

create a spinner_items file in layout folder like  

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    style="?android:attr/spinnerItemStyle"
    android:singleLine="true"
    android:layout_width="match_parent"
    android:layout_height="48dp"
    android:layout_gravity="center"
    android:gravity="center"
    android:ellipsize="marquee"
    android:background="@drawable/spinner_item_divider"
    android:textAlignment="inherit"/>

并在收到响应后调用此方法并根据您的要求进行更改

private void intializeAdapter(ArrayList<String>arrList) {

        final ArrayAdapter<String> spinnerArrayAdapter = new 
         ArrayAdapter<String>(this, R.layout.spinner_items, arrList) {
            @Override
            public boolean isEnabled(int position) {
                if (position == 0) {
                    return false;
                } else {

                    return true;
                }
            }

            @Override
            public View getDropDownView(int position, View convertView, ViewGroup parent) {
                View view = super.getDropDownView(position, convertView, parent);
                 tv = (TextView) view;
                TextView tv1 = (TextView) view;
                if (position == 0) {
                    // Set the hint text color gray
                    tv.setTextColor(Color.GRAY);

                } else {
                    tv.setTextColor(Color.BLACK);

                   // tv.setText(numberValue);


                    // tv.setBackgroundColor(Color.BLACK);
                }
                return view;
            }
        };
        spinnerArrayAdapter.setDropDownViewResource(R.layout.spinner_items);
        spinner.setAdapter(spinnerArrayAdapter);
        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                String selectedItemText = (String) parent.getItemAtPosition(position);
                if (position > 0) {
                    result = selectedItemText;
                    textView=(TextView) view;
                    numberValue=selectedItemText;
                    if(numberValue.equals("other")){
                         openAlertDialog();
                    }else if(numberValue.equals("Andet")){
                        openAlertDialog();
                    }

                }
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });
    } 

【讨论】:

  • 我的应用找不到这个方法 openAlertDialog();
  • android:background="@drawable/spinner_item_divider"
  • 我可以改变这个吗?android:background="@drawable/spinner_item_divider"
  • schemas.android.com/apk/res/android">
  • 可绘制文件夹内
猜你喜欢
  • 2020-10-15
  • 1970-01-01
  • 1970-01-01
  • 2019-09-22
  • 1970-01-01
  • 2019-07-29
  • 1970-01-01
  • 2015-03-31
  • 1970-01-01
相关资源
最近更新 更多