私は辞書アプリを作っています。私はAutoCompleteTextViewと大きな文字列リストを持っています。 ArrayAdapterを縮小せずにAutoCompleteTextViewに設定すると、フリーズします。そのため、私はTextWatcherでAdapterを設定することにしました。 textViewのテキストが変更され、textViewのアダプタが変更されます。しかし、onitemClickListenerで選択した項目を選択しようとすると、textWatcherはonclickListenerとアダプタの変更より前に動作するため、indexoutofboundsExceptionを返します。 TextWatcher内でアイテムがクリックされているかどうかを確認する方法はありますか?ご協力いただきありがとうございsetOnItemClickListenerがクリックされているかどうかをチェック
final AutoCompleteTextView textView = (AutoCompleteTextView) rootView.findViewById(R.id.autoCompleteTextView1);
textView.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if(s.length() != 0){
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);
}
}
textView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
if(parent.getItemAtPosition(position) != null);
Log.i("Debug",parent.getItemAtPosition(position)+"");
}
});
ここでエラーがあなたの助けのための 05-30 10:30:14.789: E/AndroidRuntime(10370): FATAL EXCEPTION: main 05-30 10:30:14.789: E/AndroidRuntime(10370): Process: com.alynurly.maralsozluk, PID: 10370 05-30 10:30:14.789: E/AndroidRuntime(10370): java.lang.IndexOutOfBoundsException: Invalid index 5, size is 4 05-30 10:30:14.789: E/AndroidRuntime(10370): at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255) 05-30 10:30:14.789: E/AndroidRuntime(10370): at java.util.ArrayList.get(ArrayList.java:308) 05-30 10:30:14.789: E/AndroidRuntime(10370): at android.widget.ArrayAdapter.getItem(ArrayAdapter.java:337) 05-30 10:30:14.789: E/AndroidRuntime(10370): at android.widget.AdapterView.getItemAtPosition(AdapterView.java:764) 05-30 10:30:14.789: E/AndroidRuntime(10370): at com.alynurly.maralsozluk.MainActivity$PlaceholderFragment$1.onItemClick(MainActivity.java:92) 05-30 10:30:14.789: E/AndroidRuntime(10370): at android.widget.AutoCompleteTextView.performCompletion(AutoCompleteTextView.java:902) 05-30 10:30:14.789: E/AndroidRuntime(10370): at android.widget.AutoCompleteTextView.access$500(AutoCompleteTextView.java:91) 05-30 10:30:14.789: E/AndroidRuntime(10370): at android.widget.AutoCompleteTextView$DropDownItemClickListener.onItemClick(AutoCompleteTextView.java:1192) 05-30 10:30:14.789: E/AndroidRuntime(10370): at android.widget.AdapterView.performItemClick(AdapterView.java:299) 05-30 10:30:14.789: E/AndroidRuntime(10370): at android.widget.AbsListView.performItemClick(AbsListView.java:1113) 05-30 10:30:14.789: E/AndroidRuntime(10370): at android.widget.AbsListView$PerformClick.run(AbsListView.java:2904) 05-30 10:30:14.789: E/AndroidRuntime(10370): at android.widget.AbsListView$3.run(AbsListView.java:3638) 05-30 10:30:14.789: E/AndroidRuntime(10370): at android.os.Handler.handleCallback(Handler.java:733) 05-30 10:30:14.789: E/AndroidRuntime(10370): at android.os.Handler.dispatchMessage(Handler.java:95) 05-30 10:30:14.789: E/AndroidRuntime(10370): at android.os.Looper.loop(Looper.java:136) 05-30 10:30:14.789: E/AndroidRuntime(10370): at android.app.ActivityThread.main(ActivityThread.java:5021) 05-30 10:30:14.789: E/AndroidRuntime(10370): at java.lang.reflect.Method.invokeNative(Native Method) 05-30 10:30:14.789: E/AndroidRuntime(10370): at java.lang.reflect.Method.invoke(Method.java:515) 05-30 10:30:14.789: E/AndroidRuntime(10370): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:827) 05-30 10:30:14.789: E/AndroidRuntime(10370): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:643) 05-30 10:30:14.789: E/AndroidRuntime(10370): at dalvik.system.NativeStart.main(Native Method)
のように見えるか、アプリをフリーズせずにそのアダプタを設定する方法はありますか?私は – alynurly
アダプターの変更を意味するのですか?完全なスタックトレースを送信します。 –