Автозаполнение фиксированного выбора?

65
7

Как у меня есть выбор автозаполнения на основе алфавита вместо фиксированных случаев переключения? Ситуация заключается в том, что все работает, за исключением случаев, когда я вводил ключевое слово с "B", показывающее Badrul в качестве первого предложения, но при нажатии на него все равно будут ссылаться на первые случаи переключения, которые открывают Adidas.class вместо Badrul.class

Пожалуйста, помогите, я новичок в этом. Является ли автозаполнение подходящим для моего требования?

public class Search extends Activity
{
public void onCreate(Bundle savedInstanceSate)
{
super.onCreate(savedInstanceSate);
setContentView(R.layout.searchshop);

AutoCompleteTextView autoComplete = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView1);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list_item, shops);
autoComplete.setAdapter(adapter);
autoComplete.setThreshold(1);
autoComplete.setOnItemClickListener(new OnItemClickListener()
{

@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3)
{
switch(position)
{
case 0:
startActivity(new Intent(Search.this, Adidas.class));
break;
case 1:
startActivity(new Intent(Search.this, Affin.class));
break;
case 2:
startActivity(new Intent(Search.this, AlamArt.class));
break;
case 3:
startActivity(new Intent(Search.this, Badrul.class));
break;
}
}
});
}
static final String[] shops = new String[]
{
"Adidas", "Affin Bank", "Alam Art Gallery", "Badrul"
};
}

спросил(а) 2021-01-19T13:33:19+03:00 9 месяцев, 1 неделя назад
1
Решение
79

Вы добавляете OnItemClickListener в AutoCompleteTextView. Я думаю, вы не знаете эту вещь о прослушивании элемента Click.

Переменная position в методе onItemClick() сохраняет позицию элемента, нажатого в указанном списке.

Вы сообщаете списку, показанным Badrul, как первое предложение, так что позиция элемента, которую вы нажали, равна 0, так что его переход к случаю 0:, так что его вызов Adidas.class.

Надеюсь, вы поняли проблему из моего ответа.

ответил(а) 2021-01-19T13:33:19+03:00 9 месяцев, 1 неделя назад
65

Это очевидное поведение, поскольку вы ссылаетесь на позицию предложения в настоящее время, поэтому оно будет отличаться в зависимости от того, в каком типе пользователей. Для достижения того, что вы хотите, вам нужно изменить свой код в соответствии с этим:

public class Search extends Activity
{
public void onCreate(Bundle savedInstanceSate)
{
super.onCreate(savedInstanceSate);
setContentView(R.layout.searchshop);

final AutoCompleteTextView autoComplete = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView1);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list_item, shops);
autoComplete.setAdapter(adapter);
autoComplete.setThreshold(1);
autoComplete.setOnItemClickListener(new OnItemClickListener(){

@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
int index=999;
for(int i=0;i<shops.length;i++)
{
if(autoComplete.getText().toString().trim().equals(shops[i]))
{
index=i;
break;
}
}
switch(index)
{
case 0:
startActivity(new Intent(Search.this, Adidas.class));
break;
case 1:
startActivity(new Intent(Search.this, Affin.class));
break;
case 2:
startActivity(new Intent(Search.this, AlamArt.class));
break;
case 3:
startActivity(new Intent(Search.this, Badrul.class));
break;
default:
Toast.makeText(Search.this, "Invalid Selection", Toast.LENGTH_SHORT).show();
}
}
});
}
static final String[] shops = new String[]
{
"Adidas", "Affin Bank", "Alam Art Gallery", "Badrul"
};
}

ответил(а) 2021-01-19T13:33:19+03:00 9 месяцев, 1 неделя назад
65

Г-н Кеннет. Решение уже существует, ответ на Hiral, но вы должны его модифицировать, чтобы сделать ошибку свободной.

Просто сделайте ниже изменений.

Измените приведенную ниже строку кода на 2 части.

AutoCompleteTextView autoComplete = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView1);

1. Добавьте строку ниже кода перед onCreate()

AutoCompleteTextView autoComplete;

2. Измените исходную строку следующим образом:

autoComplete = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView1);

ответил(а) 2021-01-19T13:33:19+03:00 9 месяцев, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема