Автозаполнение фиксированного выбора?
Как у меня есть выбор автозаполнения на основе алфавита вместо фиксированных случаев переключения? Ситуация заключается в том, что все работает, за исключением случаев, когда я вводил ключевое слово с "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"
};
}
Вы добавляете OnItemClickListener в AutoCompleteTextView. Я думаю, вы не знаете эту вещь о прослушивании элемента Click.
Переменная position в методе onItemClick() сохраняет позицию элемента, нажатого в указанном списке.
Вы сообщаете списку, показанным Badrul, как первое предложение, так что позиция элемента, которую вы нажали, равна 0, так что его переход к случаю 0:, так что его вызов Adidas.class.
Надеюсь, вы поняли проблему из моего ответа.
Это очевидное поведение, поскольку вы ссылаетесь на позицию предложения в настоящее время, поэтому оно будет отличаться в зависимости от того, в каком типе пользователей. Для достижения того, что вы хотите, вам нужно изменить свой код в соответствии с этим:
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"
};
}
Г-н Кеннет. Решение уже существует, ответ на Hiral, но вы должны его модифицировать, чтобы сделать ошибку свободной.
Просто сделайте ниже изменений.
Измените приведенную ниже строку кода на 2 части.
AutoCompleteTextView autoComplete = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView1);
1. Добавьте строку ниже кода перед onCreate()
AutoCompleteTextView autoComplete;
2. Измените исходную строку следующим образом:
autoComplete = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView1);