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