0

アプリケーションの自動提案でイベントリスナーをトラップしようとしています。wiki-suggestを使用してリストにデータを入力しています:http://en.wikipedia.org/w/api.php? action = opensearch&search =%22bike%22&limit = 8&namespace = 0&format=json 。

私はすべてを正しく理解していますが、リストの項目をクリックして、文字列を次のアクティビティに移動したいと思います。私は通過しました:http ://developer.android.com/reference/android/widget/AutoCompleteTextView.html#setOnItemClickListener(android.widget.AdapterView.OnItemClickListener )

しかし、それは私にそれをどのように実装できるかという考えを与えていません。

自動提案の入力のために、ここにコードを貼り付けています。この問題を解決する方法を提案してください。

@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;
    }

これは私がwiki-suggestから新しい提案を得る方法です:

autoComplete = (AutoCompleteTextView) findViewById(R.id.text); 
autoComplete.addTextChangedListener(new TextWatcher() { 
    public void afterTextChanged(Editable editable) {} 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {} 

    public void onTextChanged(CharSequence s, int start, int before, int count) { 
        String newText = s.toString(); 
        new getJson().execute(newText); 
    } 
}); 
4

2 に答える 2

1

コメントからの更新
を初期化する場所autoComplete、おそらく でonCreate()、次のように OnItemClickListener を追加します。

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);
    }
});
于 2012-09-07T17:27:06.313 に答える
0

それを解決しました。文字列全体を ItemClickListener の URL に渡すだけです。

于 2012-09-07T19:36:48.747 に答える