2012-04-26 12 views
0

私は不満な問題に直面しています.3つのタブと3つのリストビューを持つアクティビティがあり、OnItemClickイベントの問題に直面しています。任意のエントリをクリックすると、別のアクティビティが開き、目的の結果が正しく表示されますが、リストビューに戻ってエントリを開こうとすると、インデックス-1が要求されています。意味がないのは、3缶のリストビューが正しく動作し、もう1つが正しく動作していないということです。私のコード以下:カーソルインデックスがListViewの範囲外のエラー

このOnResume():

4月26日18:56:50.310:E/AndroidRuntime(878):致命的な例外

   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)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: AndroidRuntime(878):アンドロイド.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:214) 04-26 18:56:50.310:E/AndroidRuntime(878):android.database.AbstractWindowedCursor.getString( (Interface.java:781) 04-26 18:56:50.310:E/AndroidRuntime(878):master.chef.mediamaster.Interface.onItemClick(Interface.java:781) 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):at 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(ネイティブメソッド) 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) ):at dalvik.system.NativeStart.main(ネイティブメソッド)

+0

OnResume()にmoveToFirst()を追加します。 –

+0

Thankssssssssssssイムラン、それでした:)) –

+0

すべての手がかり???私はまだ以下の同じ問題に直面しています –

答えて

0

別のアクティビティを開始すると、前のアクティビティが開かれて削除され、そのように表示されます。これを克服するには、リスト生成コードをonResumeに移動し、別のアクティビティーに移動して戻るとき、およびアクティビティーを最初に開始したときに実行されます。

+0

はい、それは既にOnResume()にあります。他のアクティビティから戻ったときにリフレッシュする必要があります。 1つのリストビューがmListである3人から正しく機能しているのは意味がありません。エントリを開いてリストビューに戻っても、エラーは表示されません。 –

+0

ありがとうバラク....それは今作動する! –

+0

クエリフィルタリングのリストビューで同じ問題が発生しました。私は最初にcusrsorを移動しようとしましたが、それでも同じです。境界外の例外です。私は自分のコードを見て編集しました –

関連する問題