2017-11-23 11 views
1

私が取り組んでいるアプリケーションの1つにオートコンプリート機能を実装しようとしています。 サーバーからjson応答が返されます。私はVolleyとそれを解析しようとしました。それは動作しますが、私はautocompletetextviewとの応答を統合するのに失敗しました。AndroidでVolleyレスポンスを使用してAutoCompleteTextViewを実行できない

MainActivity.java

 user_input = findViewById(R.id.autoCompleteTextView1); 
     ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.select_dialog_item, mylist); 

     String symbol_auto = String.valueOf(user_input.getText()); 


     requestQueue = Volley.newRequestQueue(this); 
     //results = findViewById(R.id.jsonData); 
     mylist.add("india"); 
     mylist.add("iran"); 
     JsonArrayRequest arrayreq = new JsonArrayRequest(company_auto+symbol_auto, 
       new Response.Listener<JSONArray>() { 

        // Takes the response from the JSON request 
        @Override 
        public void onResponse(JSONArray response) { 
         try { 
          JSONObject jsonobj = response.getJSONObject(0); 
          data = jsonobj.getString("Name"); 
          mylist.add(data); 
          Log.i("here", data); 
          //Toast.makeText(this, data, Toast.LENGTH_SHORT).show(); 
         } 
         // Try and catch are included to handle any errors due to JSON 
         catch (JSONException e) { 
          // If an error occurs, this prints the error to the log 
          e.printStackTrace(); 
         } 
        } 
       }, 
       // The final parameter overrides the method onErrorResponse() and passes VolleyError 
       //as a parameter 
       new Response.ErrorListener() { 
        @Override 
        // Handles errors that occur due to Volley 
        public void onErrorResponse(VolleyError error) { 
         Log.e("Volley", "Error"); 
        } 
       } 
     ); 
     // Adds the JSON array request "arrayreq" to the request queue 
     requestQueue.add(arrayreq); 

     user_input.setThreshold(1); 
     user_input.setAdapter(adapter); 

私は手動で "インド" と "イラン" のような文字列を追加してみてください。それは動作します、あなたは両方の提案ドロップダウン内で見ることができますが、私はサーバーから返された追加データのいずれかを見ることができません。

これは、私はこの上で、私の頭の上に破壊されている私のautocompletetextview

<AutoCompleteTextView 
    android:id="@+id/autoCompleteTextView1" 
    android:layout_width="350dp" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/stockLabel" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="15dp" 
    android:completionThreshold="3" 
    android:ems="10" 
    android:text="@string/symbol" /> 

です。私はコンソール上で見つけることができるエラーはありません。私の頭に浮かんだことの1つは、ボレーが戻ってきていないかもしれないことです。 他のウィジェットでVolleyのレスポンスを印刷しようとすると、チャームのように機能します。どんな助けもありがとうございます。 TIA。

答えて

1

。今これを行う。

ArrayAdapter<String> adapter; 
@Override 
public void onResponse(JSONArray response) { 
    try { 
     JSONObject jsonobj = response.getJSONObject(0); 
     data = jsonobj.getString("Name"); 
     mylist.add(data); 
     String[] nameData = new String[mylist.size()]; 
     nameData = mylist.toArray(nameData); 
      adapter = new ArrayAdapter<String> 
      (MainActivity.this,android.R.layout.select_dialog_item,mylist);    
      AutoCompleteTextView actv= (AutoCompleteTextView)findViewById(R.id.autoCompleteTextView1); 
      actv.setThreshold(1);//will start working from first character 
      actv.setAdapter(adapter) 
      Log.i("here", data);        
      }       
      catch (JSONException e) {        
      e.printStackTrace(); 

      } 
     } 

ハッピーコーディング!

+0

エラーとしてコンストラクタ "ArrayAdapter"を解決できません。 –

+0

私はコードを更新して、もう一度やり直してください。 –

1

あなたの要求が非同期である、あなたが応答を待つ必要が前にあなたのUIを更新

このようなあなたの方法を変更します。あなたはArrayListにデータを記入しているバレーボールの応答に

// Takes the response from the JSON request 
        @Override 
        public void onResponse(JSONArray response) { 
         try { 
          JSONObject jsonobj = response.getJSONObject(0); 
          data = jsonobj.getString("Name"); 
          mylist.add(data); 
          Log.i("here", data); 

          ArrayAdapter adapter = new ArrayAdapter(MainActivity.this,android.R.layout.select_dialog_item, mylist); 
          user_input.setThreshold(1); 
          user_input.setAdapter(adapter); 


         } 
         // Try and catch are included to handle any errors due to JSON 
         catch (JSONException e) { 
          // If an error occurs, this prints the error to the log 
          e.printStackTrace(); 
         } 
        } 
関連する問題