2012-04-26 5 views
0

У меня возникла разочаровывающая проблема: у меня есть активность с 3 вкладками и 3 списками ListView, у меня возникла проблема с событием OnItemClick. когда я нажимаю на какую-либо запись, он открывает другое действие и правильно показывает желаемые результаты, но когда я снова вернусь к списку и попытаюсь открыть любую запись, я получил запрошенный индекс Index of bounded Index -1. Нет никакого смысла в том, что есть список из 3 может работать правильно, а другой 2 нет. Тем самым мой код:Указатель курсора из связанной ошибки с ListView

Это 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): FATAL ИСКЛЮЧЕНИЕ : main 04-26 18: 56: 50.310: E/AndroidRuntime (878): android.database.CursorIndexOutOfBoundsException: запрошенный индекс -1 с размером 1 04-26 18: 56: 50.310: E/AndroidRuntime (878)): at android.database.AbstractCursor.checkPosition (AbstractCursor.java:580) 04-26 18:56: 50.310: E/AndroidRuntime (878): at android.database.AbstractWindowedCursor.checkPosition (AbstractWindowedCursor.java:214) 04-26 18: 56: 50.310: E/AndroidRuntime (878): at android.database.AbstractWindowedCursor.getString (AbstractWindowedCursor.java:41) 04-26 18: 56: 50.310: E/AndroidRuntime (878): at master.chef.mediamaster.Interface.onItemClick (Interface.java:781) 04-26 18: 56: 50.310: E/AndroidRuntime (878): at android.widget.AdapterView.performItemClick (AdapterView.java:284) 04-26 18: 56: 50.310: E/AndroidRuntime (878): at android.widget.ListView.performItemClick (ListView. java: 3513) 04-26 18: 56: 50.310: E/AndroidRuntime (878): at 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): at 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): at android.app.ActivityThread.main (ActivityThread.java:3683) 04-26 18: 56: 50.310: E/AndroidRuntime (878): at java.lang.reflect.Method.invokeNative (собственный метод) 04-26 18: 56: 50.310: E/AndroidRuntime (878): at java.lang.reflect .Method.invoke (Method.java:507) 04-26 18: 56: 50.310: E/AndroidRuntime (878): at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:839) 04-26 18: 56: 50.310: E/AndroidRuntime (878): at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:597) 04-26 18: 56: 50.310: E/AndroidRuntime (878)): в dalvik.system.NativeStart.main (родной метод)

+0

Hemdan добавить moveToFirst() в OnResume() –

+0

Thanksssssssssssss Imran, что сделал это :)) –

+0

любые подсказки ??? я все еще сталкиваюсь с той же проблемой, что и ниже –

ответ

0

Вы запускаете другое действие, чтобы открыть предыдущий, который будет удален, и это звучит так, как будто оно есть. Чтобы преодолеть это, переместите код генерации списка в onResume, затем он будет работать, когда вы перейдете к другому действию и вернетесь, а также при первом запуске этой операции.

+0

Да, это уже в OnResume(). поэтому, возвращаясь из другой активности, он должен быть обновлен. Что не имеет смысла, у меня есть один список, который работает должным образом из трех, которые являются mList. Всякий раз, когда я открываю какие-либо записи и снова возвращаюсь к списку, он не показывает ошибку. –

+0

Спасибо Барак .... Он работает сейчас! –

+0

Я столкнулся с той же проблемой сейчас с моим списком в фильтрации запросов. Я попытался перенести cusrsor на первый, но он все тот же, вне исключения. Я редактировал мой код, чтобы посмотреть –

Смежные вопросы