2017-02-23 7 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) { 

     } 
    }); 

上記のコードでは、サーバーからの文字列のリストを取得しています。アクティビティが読み込まれると、リストの最初の項目が表示されません(「医者を選択」)。しかし、私がスピナーをクリックすると、アイテムを見て選択することができました。選択した項目は選択された状態では表示されません。誰も私を助けることができますか?ダイナミックリストのスピナーが動作しません。

ありがとうございます。 uはあなたのデータがリストに追加された後、コールが

+1

を使用する必要は信じていません。デフォルトのレイアウトを使用する代わりに、自分のレイアウトを膨張させてみてください。 – 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。

 @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) { 

      } 
     } 

EDIT:

私の悪い私が間違って質問をお読みください。 あなたのスピナー内のテキストはこれを試す見ることができない場合は、次の

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

をそして、私はあなたがあなた `textColor`と一致しない背景色をスピナーを確認してくださいdocAdapter.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item);

+0

ありがとうございます。それは働いたが、私はPatAdSignupActivity.super.getBaseContext()をArrayAdapterコンストラクタに渡す必要がありました。 – Lucky

0

コールnotifyDataSetChanged();を終えるのでinializeアダプタとsetadapterを設定すると、バックグラウンドスレッドで

関連する問題