Курсор за пределами исключения - PullRequest
0 голосов
/ 03 февраля 2012

Я получаю данные от курсора.Используя этот курсор, я заполняю текст для моего переключателя.Во время отображения действия все работает нормально, но когда я пытаюсь выбрать переключатель, я снова пытаюсь получить доступ к своему курсору, и в этот момент я получаю курсор за пределами исключения.Пожалуйста, помогите мне.

Cursor cur=db.getForcemodLevelForMenuitem(mnuItmID);            
   cur.moveToFirst();
   while (cur.isAfterLast() == false) {
     cnt=1;
     //Level 1
     if(cur.getInt(0)==1)
      {
       LinearLayout level1Layout=(LinearLayout)findViewById(R.id.level1Layout);
       level1Layout.setVisibility(View.VISIBLE);

   //ArrayList menuitemForcemodMapsLevel1=db.GetBaseObjectListFromDBWhere("MenuitemForcemodMapping", "MenuitemID= "+mnuItmID+ " and Level="+1);                    
        menuitemForcemodMapsLevel1=db.getForcemodDetailsForMenuitem(mnuItmID,1);
        RadioGroup level1_rg=(RadioGroup) findViewById(R.id.level1_rg);
        RadioButton[] rblevel1=new RadioButton[menuitemForcemodMapsLevel1.getCount()];

        menuitemForcemodMapsLevel1.moveToFirst();                   
            int i=0;
            while (menuitemForcemodMapsLevel1.isAfterLast() == false) { 

            rblevel1[i] =new RadioButton(AddPopupMenuItem.this);
            rblevel1[i].setText(menuitemForcemodMapsLevel1.getString(1).substring(0));              
            rblevel1[i].setTextColor(R.color.black);                        
            level1_rg.addView(rblevel1[i]);
            rblevel1[i].setOnClickListener(new OnClickListener() {                     

              @Override
                  public void onClick(View v) {
                 // TODO Auto-generated method stub 
                  menuitemForcemodMapsLevel1.moveToPosition(i);
                  forceModNameList.add(menuitemForcemodMapsLevel1.getString(1).substring(0));
                           }
                        });
                           i++;
                           menuitemForcemodMapsLevel1.moveToNext();
                           }                    
                           menuitemForcemodMapsLevel1.close();
                           rblevel1=null;
                         }
                       }
                        cur.moveToNext();
                      }
                     cur.close();
                     db.close();
                   } 
                 }

Я получаю сообщение об ошибке в этой строке

 :forceModNameList.add(menuitemForcemodMapsLevel1.getString(1).substring(0));

Спасибо, Неха

Ответы [ 2 ]

0 голосов
/ 03 февраля 2012

Вы уже получили 1-й элемент по адресу:

rblevel1 [I] .setText (menuitemForcemodMapsLevel1.getString (1) .substring (0));

, поэтому курсор перемещается вперед. И тогда вы снова просите то же самое восстановить. Курсор не может двигаться назад, по умолчанию он перемещается только вперед. Итак, вы получаете эту ошибку.

Почему бы вам не сохранить значение в String и, таким образом, использовать его снова без необходимости повторного получения.

Полагаю, это упростит ваш код, а также решит проблему. Попробуйте.

0 голосов
/ 03 февраля 2012

пожалуйста, используйте это, я думаю, что это решит вашу проблему

    Cursor c;
    if(c.moveToFirst())
    {
      do
       {
        // perform operation in this blocks

       }while(c.moveToNext());
     }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...