2017-02-23 50 views
0
_doctorSpinner = (Spinner) findViewById(R.id.input_doctor); 
final ArrayList<String> docList = new ArrayList<String>(); 
DataUtil.getDoctorList(this.getApplicationContext(), new ServerCallBack() { 
     @Override 
     public void onSuccess(JSONObject result) { 

     } 

     @Override 
     public void onSuccess(String result) { 

     } 

     @Override 
     public void onSuccess(JSONArray result) { 
      ArrayList<String> list = new ArrayList<String>(); 
      list.add("Select Doctor"); 
      try { 
       for (int i = 0; i < result.length(); i++) { 
        list.add(result.getString(i)); 
       } 
       docList.addAll(list); 
      } catch (JSONException e) { 

      } 
     } 
    }); 

    final ArrayAdapter<String> docAdapter = new ArrayAdapter<String>(this, R.layout.support_simple_spinner_dropdown_item, docList); 
    docAdapter.notifyDataSetChanged(); 
    docAdapter.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item); 
    _doctorSpinner.setAdapter(docAdapter); 
    _doctorSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
      System.out.println(position); 
     } 

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

     } 
    }); 

在上面的代碼中,我從服務器獲取字符串列表並在spinner中填充。當活動加載時,我無法看到列表中的第一項(「選擇醫生」)。但是當我單擊微調框時,我可以看到項目並選擇。再次選擇的項目不可見,如選定。有人能幫助我嗎?帶有動態列表的微調器不起作用

在此先感謝。在後臺線程

+1

請務必微調器的背景顏色不匹配,你'textColor'。嘗試膨脹自己的佈局,而不是使用默認的佈局。 – Wizard

回答

1
 _doctorSpinner = (Spinner) findViewById(R.id.input_doctor); 
    final ArrayList<String> docList = new ArrayList<String>(); 
    DataUtil.getDoctorList(this.getApplicationContext(), new ServerCallBack() { 
      @Override 
      public void onSuccess(JSONObject result) { 

      } 

      @Override 
      public void onSuccess(String result) { 

      } 

      @Override 
      public void onSuccess(JSONArray result) { 
       ArrayList<String> list = new ArrayList<String>(); 
       list.add("Select Doctor"); 
       try { 
        for (int i = 0; i < result.length(); i++) { 
         list.add(result.getString(i)); 
        } 
        docList.addAll(list); 
final ArrayAdapter<String> docAdapter = new ArrayAdapter<String>(this, R.layout.support_simple_spinner_dropdown_item, docList); 
     docAdapter.notifyDataSetChanged(); 
     docAdapter.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item); 
     _doctorSpinner.setAdapter(docAdapter); 
     _doctorSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
      @Override 
      public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
       System.out.println(position); 
      } 

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

      } 
     }); 
       } catch (JSONException e) { 

       } 
      } 
     }); 

Web服務調用的工作,以便ypou獲取列表大小爲零當u盤適配器,以便inialize和setadapter當呼叫結束後

+0

謝謝。它的工作,但我不得不通過PatientSignupActivity.super.getBaseContext()而不是ArrayAdapter的構造函數。 – Lucky

0

呼叫notifyDataSetChanged();您的數據添加到列表中後。

 @Override 
     public void onSuccess(JSONArray result) { 
      ArrayList<String> list = new ArrayList<String>(); 
      list.add("Select Doctor"); 
      try { 
       for (int i = 0; i < result.length(); i++) { 
        list.add(result.getString(i)); 
       } 
       docList.addAll(list); 

       if (null != docAdapter) 
         docAdapter.notifyDataSetChanged(); 

      } catch (JSONException e) { 

      } 
     } 

編輯:

我的壞我讀的問題不正確。 如果你不能看到你的微調中的文本試試這個:

ArrayAdapter<String> docAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, docList); 

而且我不相信你需要使用docAdapter.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item);