2014-09-22 97 views
7

我使用JSON从数据库中提取值并将它们插入到微调器中。此过程已成功运行。 但是当我点击微调器时,我收到了一个微调提示两次,我怎样才能把微调第一默认值...如何删除微调框android中的默认值?

这是快照 - 希望你明白我的问题:enter image description here

这是我的代码: -

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) { 
    } 
}; 
+0

与http://stackoverflow.com/questions/867518/how-to-make-an-android-spinner-with-initial-text-select-one类似。 看看这个。它为我工作。 – seema 2015-11-19 10:43:36

回答

12

使用一个ArrayAdapter和覆盖的方法 - getDropDownView ..

ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(this, 
      android.R.layout.simple_spinner_item, 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; 
     } 
    }; 

使用上述代码,在下拉删除缺省值。

+0

谢谢rahul ...其工作.. – Amardeepvijay 2014-09-22 06:24:32

+0

不适合我,你能帮我吗? – 2016-03-05 10:43:58

+0

谢谢我搜索了很多。这一个正在工作 – Andrain 2018-02-11 21:18:05