0

イライラする問題に直面しています。3 つのタブと 3 つの ListViews を持つアクティビティがあり、OnItemClick イベントの問題に直面しています。任意のエントリをクリックすると、別のアクティビティが開き、目的の結果が適切に表示されますが、リストビューに戻って任意のエントリを開こうとすると、Index out of bound 例外 Index -1 が要求されました。意味がないのは、3つのリストビューが正常に機能し、他の2つは機能しないということです。以下私のコード:

この OnResume () :

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

        }

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

        }

        public void afterTextChanged(final Editable s) {

            mAdapter.setFilterQueryProvider(new FilterQueryProvider() {
                public Cursor runQuery(CharSequence constraint) {

                    String value = "%" + constraint + "%";
                    String Type2 = "%" + jype + "%";

                    curs = mDb.query(TABLE_NAME, columns, COL_SanTitle
                            + " LIKE ? And " + COL_SanCat + " LIKE ?",
                            new String[] { value, Type2 }, null, null,
                            COL_SanTitle + " ASC");

                    return curs;

                }
            });

            fAdapter.setFilterQueryProvider(new FilterQueryProvider() {
                public Cursor runQuery(CharSequence constraint) {

                    String value = "%" + constraint + "%";

                    String Type2 = "%YES%";

                    cursF = mDb.query(TABLE_NAME, columns, COL_SandFavor
                            + " LIKE ? And " + COL_SanTitle + " LIKE ?",
                            new String[] { Type2, value }, null, null,
                            COL_SanTitle + " ASC");

                    return cursF;

                }
            });

            dAdapter.setFilterQueryProvider(new FilterQueryProvider() {
                public Cursor runQuery(CharSequence constraint) {

                    String value = "%" + constraint + "%";
                    String Type2 = "%" + jype + "%";

                    cursD = mDb.query(TABLE_NAME, columns, COL_SanTitle
                            + " LIKE ? And " + COL_SanCat + " LIKE ?",
                            new String[] { value, Type2 }, null, null,
                            COL_SanTitle + " ASC");

                    cursD.moveToFirst();

                    return cursD;

                }

            }

            );




            fAdapter.getFilter().filter(s.toString());
            mAdapter.getFilter().filter(s.toString());
            dAdapter.getFilter().filter(s.toString());



            mAdapter.notifyDataSetChanged();
            fAdapter.notifyDataSetChanged();
            dAdapter.notifyDataSetChanged();
            mList.setAdapter(mAdapter);
            fList.setAdapter(fAdapter);
            dList.setAdapter(dAdapter);


            cursD.moveToFirst();
            cursS.moveToFirst();
            curs.moveToFirst();

        }
    });

Logcat エラーは次のとおりです。

04-26 18:56:50.310: E/AndroidRuntime(878): 致命的な例外: メイン 04-26 18:56:50.310: E/AndroidRuntime(878): android.database.CursorIndexOutOfBoundsException: インデックス -1 がサイズで要求されました1 04-26 18:56:50.310: E/AndroidRuntime(878): android.database.AbstractCursor.checkPosition(AbstractCursor.java:580) 04-26 18:56:50.310: E/AndroidRuntime(878): でandroid.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:214) 04-26 18:56:50.310: E/AndroidRuntime(878): android.database.AbstractWindowedCursor.getString(AbstractWindowedCursorjava.:41) 04-26 18: 56:50.310: E/AndroidRuntime(878): master.chef.mediamaster.Interface.onItemClick(Interface.java:781) 04-26 18:56:50.310: E/AndroidRuntime(878): android.widget.AdapterView で.performItemClick(AdapterView.java:284) 04-26 18:56:50.310: E/AndroidRuntime(878):android.widget.ListView.performItemClick(ListView.java:3513) 04-26 18:56:50.310: E/AndroidRuntime(878): android.widget.AbsListView$PerformClick.run(AbsListView.java:1812) 04- 26 18:56:50.310: E/AndroidRuntime(878): android.os.Handler.handleCallback(Handler.java:587) 04-26 18:56:50.310: E/AndroidRuntime(878): android.os で。 Handler.dispatchMessage(Handler.java:92) 04-26 18:56:50.310: E/AndroidRuntime(878): android.os.Looper.loop(Looper.java:123) 04-26 18:56:50.310: E/AndroidRuntime(878): android.app.ActivityThread.main(ActivityThread.java:3683) 04-26 18:56:50.310: E/AndroidRuntime(878): java.lang.reflect.Method.invokeNative(Native) でメソッド) 04-26 18:56:50.310: E/AndroidRuntime(878): java.lang.reflect.Method.invoke(Method.java:507) 04-26 18:56:50.310: E/AndroidRuntime(878) : com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 04-26 18:56:50.310: E/AndroidRuntime(878): com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 04-26 18:56:50.310: E/AndroidRuntime(878): dalvik.system.NativeStart.main(ネイティブメソッド)

4

1 に答える 1

0

You start another activity, so that opens up the previous one to be removed, and it sounds like it is. To overcome this, move your list generation code to onResume, then it will run when you go to another activity and come back, as well as when you initially start the activity.

于 2012-04-26T03:06:24.060 に答える