Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.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
Android:如何将事件侦听器添加到自动建议下拉列表_Android_Autosuggest_Autocompletetextview - Fatal编程技术网

Android:如何将事件侦听器添加到自动建议下拉列表

Android:如何将事件侦听器添加到自动建议下拉列表,android,autosuggest,autocompletetextview,Android,Autosuggest,Autocompletetextview,我正在尝试在应用程序的自动建议上捕获事件侦听器。我正在使用wiki建议填充列表: 我正准备好所有的事情,但现在我只想点击列表中的项目,并将字符串带到下一个活动。我经历过:) 但这并没有让我知道如何实现这一点 我将我的代码粘贴到这里,用于自动建议填充。请建议如何克服这个问题 @Override protected String doInBackground(String... key) { String newText = key[0]; newText =

我正在尝试在应用程序的自动建议上捕获事件侦听器。我正在使用wiki建议填充列表:

我正准备好所有的事情,但现在我只想点击列表中的项目,并将字符串带到下一个活动。我经历过:)

但这并没有让我知道如何实现这一点

我将我的代码粘贴到这里,用于自动建议填充。请建议如何克服这个问题

@Override
    protected String doInBackground(String... key) {
        String newText = key[0];
        newText = newText.trim();
        newText = newText.replace(" ", "+");
        try {
            HttpClient hClient = new DefaultHttpClient();
            HttpGet hGet = new HttpGet(
                    "http://en.wikipedia.org/w/api.php?action=opensearch&search="
                            + newText + "&limit=8&namespace=0&format=json");
            ResponseHandler<String> rHandler = new BasicResponseHandler();
            data = hClient.execute(hGet, rHandler);
            suggest = new ArrayList<String>();
            JSONArray jArray = new JSONArray(data);
            for (int i = 0; i < jArray.getJSONArray(1).length(); i++) {
                String SuggestKey = jArray.getJSONArray(1).getString(i);
                suggest.add(SuggestKey);
            }

        } catch (Exception e) {
            Log.w("Error", e.getMessage());
        }
        runOnUiThread(new Runnable() {
            public void run() {
                aAdapter = new ArrayAdapter<String>(
                        getApplicationContext(), R.layout.item, suggest);
                autoComplete.setAdapter(aAdapter);
                aAdapter.notifyDataSetChanged();
            }
        });

        return null;
    }

根据评论更新
在初始化
autoComplete
的地方,可能在
onCreate()
中,按如下方式添加您的侦听器:

autoComplete = (AutoCompleteTextView) findViewById(R.id.autoComplete);
autoComplete.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        String text = ((TextView) view).getText().toString();
        new getJson().execute(text);
    }
});
autoComplete=(AutoCompleteTextView)findViewById(R.id.autoComplete);
setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
字符串text=((TextView)视图).getText().toString();
新建getJson().execute(文本);
}
});

解决了这个问题。只需将整个字符串传递到ItemClickListener上的URL即可。

Sam,谢谢您的回答。这里我必须通过json传递字符串。为此,我现在正在TextChangedListener上使用TextWatcher。为此,我必须将整个TextChangedListener替换为onItemClickListener或其他什么?请发布通过JSON传递字符串的代码,这样我就可以看到您是如何做到这一点的。autoComplete=(AutoCompleteTextView)findViewById(R.id.text);autoComplete.addTextChangedListener(新TextWatcher(){public void afterTextChanged(可编辑){//TODO自动生成的方法存根}public void beforeTextChanged(字符序列,int start,int count,int after){//TODO自动生成的方法存根}public void onTextChanged(字符序列s,int start,int before,int count){String newText=s.toString();new getJson().execute(newText);};我使用了上面的代码将字符串传递给json,json与上面提到的代码链接。并给出结果。请帮助我解决这个问题。嘿,Sam!我已经在代码中实现了这一点,现在我的下拉列表没有显示。我想我们将不得不同时使用这两个函数,因为没有TextWatcher,下拉列表将无法显示不会工作。而且,我已经使用了这两个功能,但仍然没有成功。
autoComplete = (AutoCompleteTextView) findViewById(R.id.autoComplete);
autoComplete.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        String text = ((TextView) view).getText().toString();
        new getJson().execute(text);
    }
});