我使用
JSON从数据库中获取值并将它们插入到微调器中.此过程已成功运行.
但是当我点击旋转器时,我收到了两次Spinner提示;如何从微调器中删除第一个默认值…
但是当我点击旋转器时,我收到了两次Spinner提示;如何从微调器中删除第一个默认值…
这是快照: – 希望你了解我的问题:
这是我的代码: –
private class GetCategories extends AsyncTask<Void,Void,Void> { protected void onPreExecute() { super.onPreExecute(); } @Override protected Void doInBackground(Void... arg0) { ServiceHandler jsonParser = new ServiceHandler(); String json = jsonParser.makeServiceCall(URL_CATEGORIES,ServiceHandler.GET); if (json != null) { try { JSONObject jsonObj = new JSONObject(json); if (jsonObj != null) { JSONArray categories = jsonObj .getJSONArray("categories"); categoriesList.clear(); for (int i = 0; i < categories.length(); i++) { JSONObject catObj = (JSONObject) categories.get(i); Category cat = new Category( catObj.getString("bus_type_id"),catObj.getString("bus_type")); categoriesList.add(cat); } } } catch (JSONException e) { e.printStackTrace(); } } else { Log.e("JSON Data","Didn't receive any data from server!"); } return null; } @Override protected void onPostExecute(Void result) { super.onPostExecute(result); populateSpinner(); } } private void populateSpinner() { List<String> lables = new ArrayList<String>(); lables.add("Choose Type"); for (int i = 0; i < categoriesList.size(); i++) { lables.add(categoriesList.get(i).getbus_type()); } // Creating adapter for spinner ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,lables); // Drop down layout style - list view with radio button spinnerAdapter .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // attaching data adapter to spinner typeSpinner.setAdapter(spinnerAdapter); typeSpinner.setOnItemSelectedListener(typeSelectedListener); } private OnItemSelectedListener typeSelectedListener = new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent,View view,int position,long id) { if (typeSpinner.getSelectedItem().toString() == "Choose Type") { str = ""; typeSpinnercity.getSelectedView(); typeSpinnercity.setEnabled(false); } else { ok.setEnabled(true); str = typeSpinner.getSelectedItem().toString(); typeSpinnercity.getSelectedView(); typeSpinnercity.setEnabled(true); if (Utils.checkInternet(CutomerOfferActivity.this)) { new GetCategoriesCity().execute(); } } } @Override public void onNothingSelected(AdapterView<?> parent) { } };
解决方法
使用ArrayAdapter并覆盖方法 – getDropDownView ..
ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(this,lables){ @Override public View getDropDownView(int position,View convertView,ViewGroup parent) { View v = null; if (position == 0) { TextView tv = new TextView(getContext()); tv.setHeight(0); tv.setVisibility(View.GONE); v = tv; } else { v = super.getDropDownView(position,null,parent); } parent.setVerticalScrollBarEnabled(false); return v; } };