我从光标中获取数据。使用此光标我填充单选按钮的文本。虽然显示活动它工作正常,但当我尝试选择单选按钮时,我再次尝试访问我的光标,那时我得到光标超出范围异常。请帮帮我。
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
答案 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
中,因此可以再次使用,而无需再次检索。
我相信这会简化您的代码并解决问题。试试吧。