2017-10-26 4 views
0

AutoCompleteTextView에 채워지는 데이터베이스에서 사용자 데이터 거짓말 이름 등을 가져 왔지만 ItemCLickListener의 위치는 자동 완성 목록에 표시된 위치에 있습니다. 배열 인덱스를 원하고 동일한 이름이있을 수 있기 때문에 어댑터에서 문자열을 가져 오는 것이 효과가 없습니다.AutoCompleteTextView에서 선택한 항목의 배열 인덱스를 얻는 방법은 무엇입니까?

업데이트

예. 데이터베이스에는 다른 필드의 다른 데이터와 함께 4 개의 항목 abc, xyz, abc, pqrq가 있습니다. 이러한 이름은 배열에 저장됩니다.

그래서 abc를 클릭하면 선택된 데이터의 배열 인덱스를 알고있는 경우에만 다른 데이터를 가져오고 싶습니다.

도움말!

+1

예 : – Sush

+0

@Sush로 빠져 나올 수 있습니다. 업데이트 된 질문을 확인하십시오. 감사합니다 –

답변

0

솔루션 :

  1. 이 항목에 대한 auto_complete_tv_adapter을 사용자 정의합니다.
  2. 어댑터 목록 항목은 다른 데이터와 이름을 보유 할 모델입니다.
  3. 선택한 모든 항목은 다른 모든 값을 갖는 데이터 모델을 갖게됩니다.

샘플 : https://www.androidcode.ninja/android-autocompletetextview-custom-arrayadapter-sqlite/

+0

죄송합니다, 나는 안드로이드에 약간 새로운입니다. 맞춤 어댑터의 텍스트 뷰 목록에있는 이름을 –

+0

샘플 링크를 사용하여 어떻게 설정합니까? 그 전체 채우기, custom_adapter 생성 방법을 살펴보십시오. – Sush

0

대신 Strings의 배열을 사용하여, 당신은 거기에 사용자 정의 객체 배열을 만들어야합니다. 만 String 당신은 또한에 독특한 ID를 추가 할 수 있습니다 다음

class CustomObject { 

    public long id; 
    public String name; 

    public CustomObject(long id, String name) { 
     this.id = id; 
     this.name = name; 
    } 

    @Override 
    public String toString() { 
     return name; 
    } 
} 

, 당신은 대신 저장하는, Strings 될 것입니다 데이터베이스에서 데이터를 얻을 :

첫째,이 같은 새로운 class를 만들 우리는 나중에 사용할 배열입니다. 그런 다음 AutoCompleteTextview 클릭 검출기는 다음과 같이 만들

// this array should contain the items from your database, and a unique id 
final CustomObject[] items = { new CustomObject(0, "test"), new CustomObject(1, "test"), 
     new CustomObject(2123123, "another name")}; 

을 :

그래서, 예를 들어, 다음과 같은 배열을 채울 수

textView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      CustomObject customObject = (CustomObject) parent.getItemAtPosition(position); 
      int index = -1; 
      for (int i = 0; i < items.length; i++) { 
       if (items[i].id == customObject.id) { 
        index = i; 
        break; 
       } 
      } 
      // now we have your index :) 
      Toast.makeText(MainActivity.this, "Your index = " + index, 
        Toast.LENGTH_SHORT).show(); 
     } 
    }); 

을 그리고 그것 뿐이다, 인덱스 당신은있다 필요한 것. 큰 배열의 경우이 방법은 느립니다.

+0

AutoCompleteTextView에 대해 표시된 문자열을 어떻게 설정합니까? –

+0

그건'toString()'에서 이루어진 것입니다. –

+0

어떤 것이'name'입니까 –

관련 문제