2015-01-29 2 views
1

사용자가 AutoCompleteTextView를 입력 할 때 웹 서비스에서 결과를 가져 와서 상자에 표시하고 싶습니다. ArrayList 변경 후 Android AutoCompleteTextView 어댑터가 업데이트되지 않음

이 들어 나는
ArrayAdapter<String> adapter; 
autoCompleteText; 
ArrayList<String> searchList; 

내에서 onCreate에 넣고 세계적 선언(). searchList는 웹 서비스에서 결과를 가져올 ArrayList입니다. 검색()은 내 웹 서비스 검색입니다. 사용자가 필드에 TextWatcher를 사용하기 위해 최소 3 자 이상을 입력 한 후 검색하고 싶습니다. 검색에서

adapter = new ArrayAdapter<String>(MyActivity.this 
      , android.R.layout.simple_list_item_1, searchList); 
    autoCompleteText.setAdapter(adapter); 
    autoCompleteText.addTextChangedListener(new TextWatcher() { 
     public void afterTextChanged(Editable s) { 
      if (s.length() >= 3) { 
       new Search().execute(null, null, null); 
      } 
     } 

     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
     } 

     public void onTextChanged(CharSequence s, int start, int before, int count) { 
     } 
    }); 

방법은() - 내 searchList

@Override 
    protected void onPostExecute(final Void unused) { 
     dlg.dismiss(); 
     if (result != null) { 
      try { 
       JSONObject myJson = new JSONObject(result.substring(4)); 

       JSONObject resp = myJson.getJSONObject("response"); 
       for (Iterator<String> iterator = resp.keys(); iterator.hasNext();) { 
        String key = iterator.next(); 
        System.out.println(key + " = " + resp.getString(key)); 
        if(! searchList.contains(resp.getString(key))) 
         searchList.add(resp.getString(key)); 
       } 

      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
     } 

    } 
} 

내가 ArrayAdapter와를 사용하는 것을 선호 아닌 CustomAdapter 업데이트 AsyncTask를에 요청을 GET. 어떤 아이디어?

+1

참조 [링크] (http://stackoverflow.com/a/15383600/4385913). –

+0

정말 좋습니다. 하지만 초보자이기 때문에 통합하는 방법을 이해할 수 없습니다. –

답변

0

목록을 변경 한 후에 onPostExecute()에서 notifyDataSetChanged()를 호출 해보십시오.

+0

작동하지 않습니다. –

0

이것은 내가 업데이트 방법 내 AutoCompleteTextView :

String[] data = terms.toArray(new String[terms.size()]); 
// terms is a List<String> 
ArrayAdapter<?> adapter = new ArrayAdapter<Object>(activity, android.R.layout.simple_dropdown_item_1line, data); 
keywordField.setAdapter(adapter); // keywordField is a AutoCompleteTextView 
if(terms.size() < 40) keywordField.setThreshold(1); 
else keywordField.setThreshold(2); 
지금은 물론이 정적이며 공중파 제안을 취급하지 않지만, 나는 또한 당신을 위해 어댑터를 알리도록 제안 할 수

당신이 AutoCompleteTextView에 할당 후 변경 :

adapter.notifyDataSetChanged(); 
+0

어댑터 업데이트에 대한 모든 게시물에이 링크를 복사하여 붙여 넣기 만하면됩니다. 다른 게시물에서 널 봤어. 실질적인 도움을 시도하십시오 –

+0

모든 코드는 모든 개발자가 다를 수 있습니다. 나는 당신에게 아이디어를주기 위해 이것을 베꼈습니다. 누구도 각 행을 입력하지 않습니다. –

+0

작동하지 않습니다 ... –

관련 문제