Java 如何使用AutoCompleteTextView提取字符串?
我知道Stackoverflow中有多个帖子在处理这个查询。但是,由于某些原因,我仍然无法从Java 如何使用AutoCompleteTextView提取字符串?,java,android,android-activity,Java,Android,Android Activity,我知道Stackoverflow中有多个帖子在处理这个查询。但是,由于某些原因,我仍然无法从AutoCompleteTextView中提取字符串。为此,我尝试使用了监听器。我无法确定我错在哪里 代码: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ... addPurchaseItemName = (Au
AutoCompleteTextView
中提取字符串。为此,我尝试使用了监听器。我无法确定我错在哪里
代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
addPurchaseItemName = (AutoCompleteTextView) findViewById(R.id.addPurchaseProductName);
vivzHelper = new VivzDatabaseAdapter(this);
String[] autoCompleteName = vivzHelper.getInventoryNameFilterBySupplierName(vivzHelper.getSupplierID(param1));
ArrayAdapter<String> NameAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, autoCompleteName);
addPurchaseItemName.setThreshold(1);// starts working from first char
addPurchaseItemName.setAdapter(NameAdapter);
addPurchaseItemName.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
itemName = String.valueOf(arg0.getItemAtPosition(arg2));
}
});
}
更新02:声明itemName
public class AddPurchase extends ActionBarActivity {
AutoCompleteTextView addPurchaseItemName;
String itemName;
尝试在addTextChangedListener
回调中获取itemName
addPurchaseItemName.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
itemName = s.toString();
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
如果您只想从“自动完成”中获取所选项目字符串,则
itemName = addPurchaseItemName.getText();
甚至更好-
itemName = addPurchaseItemName.getText().toString().trim();
最新答案
与其设置onItemClickListener
,不如设置OnItemSelectedListener
,这肯定会起作用
addPurchaseItemName.setOnSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected (AdapterView<?> parent, View view, int position, long id) {
//... your stuff
itemName = addPurchaseItemName.getText().toString().trim();
Toast.makeText(getApplicationContext(), "selected value - "+itemName, Toast.LENGTH_SHORT);
}
});
addPurchaseItemName.setOnSelectedListener(新的OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){
//…你的东西
itemName=addPurchaseItemName.getText().toString().trim();
Toast.makeText(getApplicationContext(),“selected value-”+itemName,Toast.LENGTH\u SHORT);
}
});
您的代码中有很多问题是不必要的,这让您很难理解。尝试只放置相关的部分,以及itemName
变量的声明。您可以演示如何初始化itemName
?另外,在onItemClick()
中添加一个日志项,并记录itemName
的值。发布与NameAdapter
相关的代码。我已在上面更新了如何声明itemName
变量。我已经尝试使用itemName=addPurchaseItemName.getText().toString()
。但是,仍然显示异常异常是什么?你能发日志吗?除非我们有其他问题,否则我回答的代码片段工作得很好。对不起。第二句话不是对你的回应。事实上,你的情况也不例外。但是,itemName
的字符串值仍然为空,我已经用Toast确认了这一点。再次抱歉。你要把吐司放在哪里?你的onItemClick()是否被调用?尝试使用addTextChangedListener()
。显示相同的异常
addPurchaseItemName.setOnSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected (AdapterView<?> parent, View view, int position, long id) {
//... your stuff
itemName = addPurchaseItemName.getText().toString().trim();
Toast.makeText(getApplicationContext(), "selected value - "+itemName, Toast.LENGTH_SHORT);
}
});