Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用AutoCompleteTextView提取字符串?_Java_Android_Android Activity - Fatal编程技术网

Java 如何使用AutoCompleteTextView提取字符串?

Java 如何使用AutoCompleteTextView提取字符串?,java,android,android-activity,Java,Android,Android Activity,我知道Stackoverflow中有多个帖子在处理这个查询。但是,由于某些原因,我仍然无法从AutoCompleteTextView中提取字符串。为此,我尝试使用了监听器。我无法确定我错在哪里 代码: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ... addPurchaseItemName = (Au

我知道Stackoverflow中有多个帖子在处理这个查询。但是,由于某些原因,我仍然无法从
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);
    }
});