如何根据字母而非固定开关案例进行自动完成选择?情况是,一切正常,除非我输入关键字“B”显示Badrul作为第一个建议,但点击它仍然会引用第一个开启Adidas.class而不是Badrul.class的开关案例
请帮忙,我是新手。 AutoComplete是否适合我的要求?
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"
};
}
答案 0 :(得分:2)
您要将 OnItemClickListener 添加到 AutoCompleteTextView 。关于Item Click Listener,我认为你不知道这件事。
onItemClick()方法中的位置变量存储在所显示的列表中单击的项目的位置。
您告诉显示 Badrul 的列表作为第一个建议,所以您点击的项目的位置为0 ,以便它转到案例0:< / strong>,以便调用 Adidas.class 。
我希望你从我的回答中理解这个问题。
答案 1 :(得分:1)
这是显而易见的行为,因为您指的是当前建议的位置,因此根据用户输入的内容会有所不同。为了达到您的目的,您需要根据以下内容更改您的代码:< / p>
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"
};
}
答案 2 :(得分:1)
先生。 Kenneth解决方案已经存在, Hiral 的答案,但您必须对其进行修改,以使无错误。
只需进行以下更改。
将以下代码行修改为两部分。
AutoCompleteTextView autoComplete = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView1);
1。在 onCreate()
之前添加以下代码行AutoCompleteTextView autoComplete;
2.修改原始行,如下所示
autoComplete = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView1);