2011-01-27 1 views
27

나는 작동하는 내 응용 프로그램에 AutoCompleteTextView가 있습니다. onClickItemListener를 성공적으로 만들었습니다. 문제는 사용자가 선택한 텍스트를 가져 오는 방법입니다. 그리고 이것입니다 : 나는 제안을 검색하기 위해 어댑터에 전달되는 단어가있는 ArrayList를 가지고 있습니다. 사용자가 단어를 입력 할 때 추천 목록이 더 짧아집니다 (UI 측면의 행). 따라서 색인에서 ArrayList의 단어를 가져 오려면 사용자가 색인을 일치시키지 않아 잘못된 단어가 표시됩니다. 인덱스를 엉망으로 만들지 않고도 사용자가 선택한 텍스트 (String)를 어떻게 얻을 수 있습니까? 여기에 내 코드입니다 :자동 완성 textview에서 텍스트를 얻는 방법 android

public class AutocompleteActivity extends BaseActivity { 

    private DBManager m_db; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.autocomplete); 

     m_db = new DBManager(this); 
     final ArrayList<String> words = m_db.selectAllWords(); 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.listitem, words); 

     AutoCompleteTextView tv = (AutoCompleteTextView)findViewById(R.id.autocomplete); 
     tv.setThreshold(1); 
     tv.setAdapter(adapter); 

     tv.setOnItemClickListener(new OnItemClickListener() { 

      public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
       Log.i("SELECTED TEXT WAS------->", words.get(arg2)); 
      } 
     }); 
    } 
} 
+0

이 코드 스 니펫을 추가해 주셔서 감사합니다. 거의 6 시간이 걸렸습니다. 그 +1은 – Android

+0

코드가 작동했습니다. 나 같은 초보자를위한 작은 팁이 코드를 붙여 넣은 다음 필드를 클릭하고 문자를 입력하면 제안 상자가 표시됩니다. 나는 코드를 붙여 넣고 제출 된 것을 클릭하고 절대로 열리지 않는 POPUP에 대한 제안 상자를 기다렸다. 그러나 POPUP을 표시하는 showDialogBox() 메소드가 있습니다. – Pravin

답변

36

arg0AdapterViewarg2 위치 인.

arg0.getItemAtPosition(arg2); 
+0

id가 아닌 사용자가 선택한 텍스트를 찾고 있습니다 –

+0

arg3은 데이터베이스의 ID입니다. 우리는 그것을 직접 사용할 수 있습니다 – Vijay

40

그래 ... 불행히도 onItemClick 방법에 매개 변수의 이름은 당신이 그렇게 자기 설명하지 구현해야하지만, 여기에 그들이 무엇의 이름의 예는 다음과 같습니다

는 시도 되세요 :

autoCompleteTextView.setOnItemClickListener(new OnItemClickListener() { 
    public void onItemClick(AdapterView<?> parent, View view, int position, long rowId) { 
     String selection = (String)parent.getItemAtPosition(position); 
     //TODO Do something with the selected text 
    } 
}); 
  • 부모 클릭이 일어난 어댑터 뷰 AdapterView.
  • 위치 어댑터
  • ID 클릭 된 항목의 행 번호에서 뷰의 위치 (이는 어댑터에 의해 제공된 볼 것) 내에 클릭 된 어댑터 뷰 AdapterView를보기를 볼 .

더 많은 정보를 참조 :

+0

귀하의 제안은 선택된 답변 대신 잘 동작하고 있습니다. –

+0

덕분에 감사드립니다. 이것이 최고의 대답입니다. 너 오른쪽에 –

8

http://developer.android.com/reference/android/widget/AdapterView.OnItemClickListener.html 난 당신이 찾고있는 무슨 생각이입니다.

String s = this.mCountry.getEditableText().toString(); 

mCountryAutoCompleteTextView 어디.

this.mCountry = (AutoCompleteTextView) findViewById(R.id.autocomplete_country); 
    ArrayAdapter<String> adapterCountry = new ArrayAdapter<String>(this, R.layout.list_item, countries); 
    this.mCountry.setAdapter(adapterCountry); 

mCountry 국가의 목록입니다, 나는 SharedPreferences에서 선택한 국가를 저장하고 싶었다.

희망이 도움이됩니다.

3

이 시도 :

txtPurpose.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
           long arg3) { 
      Purpose selected = (Purpose) arg0.getAdapter().getItem(arg2); 
      txtPurpose.setTag(selected); 
     } 
    }); 
2

AutoCompleteTextView에서 선택한 제안의 텍스트를 얻기의 또 다른입니다

@Override 
public void onItemClick(AdapterView<?> parent, View view,int position, long id) 
{ 
    TextView txtvw=(TextView) view; 
    String str=txtvw.getText().toString(); 
    int index = contactNames.indexOf(str); 
} 
3

선택한 제안의 텍스트를 얻기 위해 모든

의 가장 쉬운 AutoCompleteTextView에서 this를 사용하십시오

 autoCompleteTextView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      Log.e("========>>", autoCompleteTextView.getText().toString()); 
     } 
    }); 
1

다음은 문제를 해결하는 코드입니다.

private AdapterView.OnItemClickListener onItemClickListener = new AdapterView.OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int pos, long id) { 
     int index = (int) view.getTag(); 
     Object item = parent.getItemAtPosition(index); 
     if (item instanceof SearchItemShareConnectionDAO) { 
      SearchItemShareConnectionDAO dao = (SearchItemShareConnectionDAO) item; 

     } 
    } 
}; 

어댑터의 getView() 메소드에서 SetTag (Dao.getPosition)

public void onItemClick(AdapterView<?> adapterViewIn, View viewIn, int selectedItemIndexIn, long id) 
:
+0

너. 이것은 우리에게 특별한 데이터를 줄 것이다. 보기의 태그에서 :) –

0

모범 사례에 따라 사용자

public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
    String selectedItemText = arg0.getItemAtPosition(arg2); 
    Log.i("myTag", "SELECTED TEXT WAS["+selectedItemText+"]); 
} 

가 선택한 표시 항목의 텍스트를 얻으려면, 코드를 더욱 이해가됩니다 변수에 대한 설명 명칭의 일부 양식을 사용하시기 바랍니다