光标超出范围异常

时间:2012-02-03 14:22:32

标签: android cursor radio-button

我从光标中获取数据。使用此光标我填充单选按钮的文本。虽然显示活动它工作正常,但当我尝试选择单选按钮时,我再次尝试访问我的光标,那时我得到光标超出范围异常。请帮帮我。

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));

谢谢, NEHA

2 个答案:

答案 0 :(得分:0)

请使用此,我认为它将解决您的问题

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

       }while(c.moveToNext());
     }

答案 1 :(得分:0)

你已经在第一个元素中找到了:

  

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

所以光标向前移动。然后你再次要求检索相同的东西。光标无法向后移动,默认情况下仅向前移动。所以你得到了这个错误。

为什么不将值保存在String中,因此可以再次使用,而无需再次检索。

我相信这会简化您的代码并解决问题。试试吧。