首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android动态自动完成-附加的次要修复代码

Android动态自动完成-附加的次要修复代码
EN

Stack Overflow用户
提问于 2010-10-22 00:13:33
回答 1查看 1.1K关注 0票数 2

我正在尝试在android中实现一个动态自动完成小部件。我已经完成了主要的功能,自动完成是为youtube视频搜索实现的。

当我开始键入一两个字母时,自动补全不起作用。但是当我输入三个或更多的字母时,它就能很好地工作。当我输入两个字母并按下退格键时,它也会起作用。我不知道代码出了什么问题。

我已经上传了代码here

专家们,请指导我。如果你能指出我在代码中哪里出了问题,我将不胜感激。

在这方面的任何帮助都是非常感谢的。

期待,问候,罗尼

代码语言:javascript
复制
import org.json.JSONArray;
import org.json.JSONException;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.ArrayAdapter;

public class YoutubeAutoComplete extends Activity {
Youtube yt = new Youtube();
CustomAutoComplete myAutoComplete;
ArrayAdapter<String> adapter;
private JSONArray js;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    myAutoComplete = (CustomAutoComplete) findViewById(R.id.autocomplete);
    adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_dropdown_item_1line);
    myAutoComplete.addTextChangedListener(textWatcher);
    myAutoComplete.setAdapter(adapter);
    adapter.notifyDataSetChanged();
}

TextWatcher textWatcher = new TextWatcher() {

    public void onTextChanged(final CharSequence s, int start, int before,
            int count) {

        Thread t = new Thread() {

            public void run() {
                try {
                    js = yt.GetSuggestions(s.toString()).getJSONArray(1);
                    messageHandler.sendEmptyMessage(0);
                } catch (JSONException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

            }
        };
        t.start();
    }

    public void beforeTextChanged(CharSequence s, int start, int count,
            int after) {

    }

    public void afterTextChanged(Editable s) {
    }
};

private Handler messageHandler = new Handler() {
    public void handleMessage(Message msg) {
        adapter.clear();
        for (int i = 0; i < js.length(); i++) {
            try {
                adapter.add(js.getJSONArray(i).getString(0));
                System.out.println(js.getJSONArray(i).getString(0));
            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        adapter.notifyDataSetChanged();
    }
};

}
EN

回答 1

Stack Overflow用户

发布于 2011-04-20 00:01:57

看看completionThreshold,也就是用户在得到补全建议之前必须输入的字符数。

http://developer.android.com/reference/android/widget/AutoCompleteTextView.html#attr_android:completionThreshold

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3989564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档