2012-02-03 20 views
0

カーソルからデータを取得しています。このカーソルを使用して、ラジオボタンのテキストを入力しています。アクティビティを表示している間、それはうまく動作しますが、ラジオボタンを選択しようとすると、再度カーソルにアクセスしようとします。その時、カーソルが境界例外から外れます。私を助けてください。カーソルの範囲外の例外

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

おかげで、 ネハ

答えて

0

あなたはすでに盗んあなたの問題を解決すると思うこれを使用してください最初の要素:

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

ですから、カーソルが先に移動します。そして、あなたは同じことを再度尋ねてきます。カーソルは後方に移動することはできず、デフォルトでは前方にのみ移動します。このエラーが発生しています。

なぜ値をStringに保存しないで、もう一度それを取得しなくても、再度使用できます。

これは、コードを簡素化し、問題を解決するために役立ちます。試してみる。

+0

ありがとう:)それは働いた.. – Neha

0

、私はそれが

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

     }while(c.moveToNext()); 
    } 
+0

疑問がある場合は教えてください –

+0

moveToFirst()の呼び出しを確認する必要があります。 falseを返すと、カーソルは空になり、do-whileループに入ることはできません。 – Samuel

+0

はいサミュエル、申し訳ありません。この時間は非常に緊急の返事をオフィスを残しているので –

関連する問題