0

후보 항목의 잠재적으로 긴 목록에서 항목을 선택하려면 AutoCompleteTextView를 사용하려고합니다. 목록을 잘 표시 할 수 있으며 사용자가 자동 ​​완성 제안 중 하나를 선택할 때 onItemClick에 전화를 걸 수 있습니다. 문제는 onItemClick에보고 된 "위치"가 필터링 된 항목의 드롭 다운 목록에있는 위치이며 원래의 후보 목록에있는 위치가 아니라는 것입니다.AutoCompleteTextView - 원본 목록의 어떤 항목을 선택했는지 확인하는 방법은 무엇입니까?

내가 필터링 한 후에 드롭 다운 목록의 위치가 아니라 ArrayAdapter에 부여한 원래 목록에서 선택한 항목의 인덱스를 알아야합니다.

AutoCompleteTextView를 서브 클래 싱하고 원래 목록 인덱스를 제공해야하는 onCommitCompletion을 재정의했으나 항목을 선택하면 호출되지 않습니다.

BaseAdapter를 서브 클래 싱하여 각 항목에 대한 응용 프로그램 개체를 사용하여 자동 완성 목록보기 및 setTag를 생성 할 수 있었지만 AutoCompleteTextView는 setAdapter의 BaseAdapter 하위 클래스를 허용하지 않습니다.

저는 AutoCompleteTextView를 완전히 다시 작성하지 않고이를 수행 할 방법이 없다고 생각합니다.

누군가가이 문제에 대한 답변을 갖고 있습니다.

+0

여기 내가 필요한 것을 알고 있습니다. 불행히도 코드가 없으므로 질문에주의를 기울이지 않았습니다. 나는 질문을 올렸고, 따라 갔다. http://stackoverflow.com/questions/17425139/2-autocompletetextviews-how-to-know-which-view-has-been-selected – Siddharth

답변

0

어떻게할지는 모르겠지만 어댑터가 id을 올바르게 지정했는지 확인한 다음 해당 값을 콜백에 사용하십시오.

0
STATE.setOnItemClickListener(new OnItemClickListener(){ 

    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long rowId) { 
     String selection = (String) parent.getItemAtPosition(position); 
     int pos = -1; 

     for (int i = 0; i < yourarray.length; i++) { 
      if (yourarray[i].equals(selection)) { 
       pos = i; 
       break; 
      } 
     } 
     System.out.println("Position " + pos); //check it now in Logcat 
    } 
});