Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.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 检查是否单击了setOnItemClickListener_Java_Android - Fatal编程技术网

Java 检查是否单击了setOnItemClickListener

Java 检查是否单击了setOnItemClickListener,java,android,Java,Android,我正在做一个字典应用程序。我有一个AutoCompleteTextView和大量字符串列表。当我将ArrayAdapter设置为AutoCompleteTextView而不收缩它时,它会冻结。这就是我决定用TextWatcher设置适配器的原因。文本视图上的文本更改,文本视图适配器更改。但当我尝试使用onitemClickListener选择所选项目时,它返回indexoutofboundsException,因为textWatcher在onclickListener和适配器更改之前工作。有没有

我正在做一个字典应用程序。我有一个AutoCompleteTextView和大量字符串列表。当我将ArrayAdapter设置为AutoCompleteTextView而不收缩它时,它会冻结。这就是我决定用TextWatcher设置适配器的原因。文本视图上的文本更改,文本视图适配器更改。但当我尝试使用onitemClickListener选择所选项目时,它返回indexoutofboundsException,因为textWatcher在onclickListener和适配器更改之前工作。有没有办法检查项目是否在TextWatcher中被单击?谢谢你的帮助

final AutoCompleteTextView textView=(AutoCompleteTextView)rootView.findViewById(R.id.AutoCompleteTextView 1);
addTextChangedListener(新的TextWatcher(){
@凌驾
public void onTextChanged(字符序列、int start、int before、int count){
如果(s.长度()!=0){
openDataBase();
wl=db.getWordList(s.toString());
ArrayAdapter=新的ArrayAdapter(getActivity(),android.R.layout.simple_下拉列表_item_1line,wl.getWordList());
setAdapter(适配器);
}
}
textView.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
if(parent.getItemAtPosition(position)!=null);
Log.i(“Debug”,parent.getItemAtPosition(position)+”);
}
});
这是错误
05-30 10:30:14.789:E/AndroidRuntime(10370):致命异常:主
05-30 10:30:14.789:E/AndroidRuntime(10370):进程:com.alynurly.maralsozluk,PID:10370
05-30 10:30:14.789:E/AndroidRuntime(10370):java.lang.IndexOutOfBoundsException:无效索引5,大小为4
05-30 10:30:14.789:E/AndroidRuntime(10370):位于java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
05-30 10:30:14.789:E/AndroidRuntime(10370):在java.util.ArrayList.get(ArrayList.java:308)
05-30 10:30:14.789:E/AndroidRuntime(10370):位于android.widget.ArrayAdapter.getItem(ArrayAdapter.java:337)
05-30 10:30:14.789:E/AndroidRuntime(10370):在android.widget.AdapterView.getItemAtPosition(AdapterView.java:764)
05-30 10:30:14.789:E/AndroidRuntime(10370):位于com.alynurly.maralsozluk.MainActivity$PlaceholderFragment$1.onItemClick(MainActivity.java:92)
05-30 10:30:14.789:E/AndroidRuntime(10370):在android.widget.AutoCompleteTextView.performCompletion(AutoCompleteTextView.java:902)
05-30 10:30:14.789:E/AndroidRuntime(10370):在android.widget.AutoCompleteTextView.access$500(AutoCompleteTextView.java:91)
05-30 10:30:14.789:E/AndroidRuntime(10370):在android.widget.AutoCompleteTextView$DropDownItemClickListener.onItemClick(AutoCompleteTextView.java:1192)
05-30 10:30:14.789:E/AndroidRuntime(10370):在android.widget.AdapterView.performItemClick(AdapterView.java:299)
05-30 10:30:14.789:E/AndroidRuntime(10370):在android.widget.AbsListView.performItemClick(AbsListView.java:1113)
05-30 10:30:14.789:E/AndroidRuntime(10370):在android.widget.AbsListView$PerformClick.run(AbsListView.java:2904)
05-30 10:30:14.789:E/AndroidRuntime(10370):在android.widget.AbsListView$3.run(AbsListView.java:3638)
05-30 10:30:14.789:E/AndroidRuntime(10370):在android.os.Handler.handleCallback(Handler.java:733)上
05-30 10:30:14.789:E/AndroidRuntime(10370):在android.os.Handler.dispatchMessage(Handler.java:95)上
05-30 10:30:14.789:E/AndroidRuntime(10370):在android.os.Looper.loop(Looper.java:136)上
05-30 10:30:14.789:E/AndroidRuntime(10370):位于android.app.ActivityThread.main(ActivityThread.java:5021)
05-30 10:30:14.789:E/AndroidRuntime(10370):位于java.lang.reflect.Method.Invokenactive(本机方法)
05-30 10:30:14.789:E/AndroidRuntime(10370):位于java.lang.reflect.Method.invoke(Method.java:515)
05-30 10:30:14.789:E/AndroidRuntime(10370):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:827)
05-30 10:30:14.789:E/AndroidRuntime(10370):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:643)
05-30 10:30:14.789:E/AndroidRuntime(10370):在dalvik.system.NativeStart.main(本机方法)

谢谢您的帮助。我了解到可以使用
自动完成文本视图检查是否单击了dropdownitem。isPerformingOperation()
。因此,现在我的新代码如下所示

    @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
  //doesn't work if list is clicked
            if(s.length() != 0 && !textView.isPerformingCompletion()){
                db.openDataBase();
                 wl = db.getWordList(s.toString());
                ArrayAdapter<String>  adapter = new ArrayAdapter<String>(getActivity(),android.R.layout.simple_dropdown_item_1line, wl.getWordList());
                textView.setAdapter(adapter);
            }
        }
@覆盖
public void onTextChanged(字符序列、int start、int before、int count){
//如果单击列表,则不起作用
如果(s.length()!=0&&!textView.isPerformingCompletion()){
openDataBase();
wl=db.getWordList(s.toString());
ArrayAdapter=新的ArrayAdapter(getActivity(),android.R.layout.simple_下拉列表_item_1line,wl.getWordList());
setAdapter(适配器);
}
}

或者是否有其他方法可以在不冻结应用程序的情况下设置适配器?帮助我适应更改的意思?发布完整的堆栈跟踪。
    @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
  //doesn't work if list is clicked
            if(s.length() != 0 && !textView.isPerformingCompletion()){
                db.openDataBase();
                 wl = db.getWordList(s.toString());
                ArrayAdapter<String>  adapter = new ArrayAdapter<String>(getActivity(),android.R.layout.simple_dropdown_item_1line, wl.getWordList());
                textView.setAdapter(adapter);
            }
        }