Как я могу получить абсолютное положение моего объекта, выбранного автозаполнением. Когда я использую arg2, найдите относительное положение в раскрывающемся списке автозаполнения. Я хочу, чтобы позиция выбранного объекта была в моем первоначальном списке.
Мой код:
AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autocomplete_friends);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list_item, friendsListNameOrder);
textView.setAdapter(adapter);
textView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
friendsListNameOrder.get(arg2);
}
Наверное, не так элегантно, как вы надеялись:
final String[] COUNTRIES = new String[] { "Belgium", "France", "Italy",
"Germany", "Spain" };
final AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.AutoCompleteTextView01);
final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
R.layout.log_item, COUNTRIES);
textView.setAdapter(adapter);
textView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
String s = ((TextView) arg1).getText().toString();
Log.e("Test", s + " position: "
+ getArrayIndex(COUNTRIES, s));
}
});
где getArrayIndex:
public final int getArrayIndex(String[] myArray, String myObject) {
int ArraySize = Array.getLength(myArray);// get the size of the array
for (int i = 0; i < ArraySize; i++) {
if (myArray[i].equals(myObject)) {
return (i);
}
}
return (-1);// didn't find what I was looking for
}
Вы можете создать настраиваемый адаптер, который расширяет ArrayAdapter и отменяет метод getPosition(). В коде метода вы получаете позицию из исходного списка данных.
@Override
public int getPosition(Object item) {
return friendsListNameOrder.indexOf(item);
}
Хотя я предполагаю, что это может вызвать некоторые осложнения, может быть полезно, когда вы начнете добавлять дополнительные функции.