2012-09-07 2 views
0

내 애플리케이션의 자동 제안에 이벤트 리스너를 트랩하려고합니다. wiki-suggest : http://en.wikipedia.org/w/api.php?action=opensearch&search=%22bike%22&limit=8&namespace=0&format=json을 사용하여 목록을 채 웁니다.Android : 자동으로 이벤트 리스너를 제안하는 방법 드롭 다운리스트

나는 모든 일을 올바르게하고 있지만 지금은 목록의 항목을 클릭하고 다음 활동으로 문자열을 가져 오려고합니다. 나는 끝났어. http://developer.android.com/reference/android/widget/AutoCompleteTextView.html#setOnItemClickListener(android.widget.AdapterView.OnItemClickListener)

그러나 그것은 내가 그것을 어떻게 구현할 수 있는지 생각하지 못한다.

자동 제안 채우기를 위해 여기에 내 코드를 붙여 넣습니다. 이 문제를 극복하는 방법을 제안하십시오.

@Override 
    protected String doInBackground(String... key) { 
     String newText = key[0]; 
     newText = newText.trim(); 
     newText = newText.replace(" ", "+"); 
     try { 
      HttpClient hClient = new DefaultHttpClient(); 
      HttpGet hGet = new HttpGet(
        "http://en.wikipedia.org/w/api.php?action=opensearch&search=" 
          + newText + "&limit=8&namespace=0&format=json"); 
      ResponseHandler<String> rHandler = new BasicResponseHandler(); 
      data = hClient.execute(hGet, rHandler); 
      suggest = new ArrayList<String>(); 
      JSONArray jArray = new JSONArray(data); 
      for (int i = 0; i < jArray.getJSONArray(1).length(); i++) { 
       String SuggestKey = jArray.getJSONArray(1).getString(i); 
       suggest.add(SuggestKey); 
      } 

     } catch (Exception e) { 
      Log.w("Error", e.getMessage()); 
     } 
     runOnUiThread(new Runnable() { 
      public void run() { 
       aAdapter = new ArrayAdapter<String>(
         getApplicationContext(), R.layout.item, suggest); 
       autoComplete.setAdapter(aAdapter); 
       aAdapter.notifyDataSetChanged(); 
      } 
     }); 

     return null; 
    } 

이 내가에서 새로운 제안을 얻는 방법이다 위키 제안 : 주석에서

autoComplete = (AutoCompleteTextView) findViewById(R.id.text); 
autoComplete.addTextChangedListener(new TextWatcher() { 
    public void afterTextChanged(Editable editable) {} 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {} 

    public void onTextChanged(CharSequence s, int start, int before, int count) { 
     String newText = s.toString(); 
     new getJson().execute(newText); 
    } 
}); 

답변

0

해결했습니다. 전체 문자열을 ItemClickListener의 URL로 전달하면됩니다.

1

업데이트를 당신이 onCreate() 아마, autoComplete를 초기화
,이처럼 OnItemClickListener를 추가 :

autoComplete = (AutoCompleteTextView) findViewById(R.id.autoComplete); 
autoComplete.setOnItemClickListener(new OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     String text = ((TextView) view).getText().toString(); 
     new getJson().execute(text); 
    } 
}); 
+0

샘, 답변 해 주셔서 감사합니다. 여기 나는 json을 통해 문자열을 전달해야합니다. 지금 당장 TextChangedListener에서 TextWatcher를 사용하고 있습니다. 이를 위해 전체 TextChangedListener를 onItemClickListener로 바꾸거나 무엇을 사용해야합니까? – Anupam

+0

JSON을 통해 String을 전달하는 코드를 게시하여이 작업을 수행하는 방법을 확인할 수 있습니다. – Sam

+0

autoComplete = (AutoCompleteTextView) findViewById (R.id.text); \t \t autoComplete.addTextChangedListener (새 TextWatcher() { \t \t \t 공개 무효 afterTextChanged (편집 가능한) { \t \t \t \t // TODO 자동 생성 방법 스텁 \t \t \t} \t \t \t 공개 void beforeTextChanged (CharSequence s, int start, int count, \t \t \t \t \t INT 후) { \t \t \t \t // TODO 자동 생성 방법 스터브 \t \t \t} \t \t \t 공개 무효가 onTextChanged (이전의 CharSequence S, INT 개시, INT \t \t \t \t \t int count) { \t \t \t \t 문자열 newText = s.toString(); \t \t \t \t new getJson().실행 (newText); \t \t \t} \t \t}); – Anupam