【问题标题】:Problem with RMSRMS 问题
【发布时间】:2011-08-15 06:02:56
【问题描述】:

我的RMS有问题,我需要删除一条记录并在升级后移动记录,有机会吗?我试图避免这种情况,但总而言之,我最终得到了这个:(


有没有办法转换这个:

public void profilRmsPopulator(Form fr, ChoiceGroup hg) throws RecordStoreNotOpenException, RecordStoreException{
     int spacePos=0;

       for (int i =1; i<=rs.getNumRecords();i++){

       System.out.println("for loop\n");

  spacePos=RmsToStringDumper(i).indexOf(" ");
       System.out.println("spacePos: \n" +spacePos);

        hg.append(RmsToStringDumper(i).substring(0, spacePos),null);
           }

       fr.append(hg);

}

进入while (recordEnumeration.hasNextElement())?当然用这个字符串修剪:P


好的,也许我会解释一下我现在遇到的问题。我已经在移动设备上创建了一个应用程序,到目前为止,它正在创建一个用户配置文件并将其写入 RMS,它工作得很好。该算法的工作原理如下:用户被要求提供个人资料的名称和其他一些详细信息,当他/她完成时,正在保存数据。记录的模式如下所示:Name_of_profile、型号、品牌等。然后程序修剪记录以获取 name_of_profile 并将其放入choiceGroup。它也像一个魅力,但真正的问题是删除,我可以删除第一条或第二条记录,但是当我放入新的 [新配置文件] 时,我收到如下错误:

javax.microedition.rms.InvalidRecordIDException: 错误查找记录

【问题讨论】:

    标签: java-me rms


    【解决方案1】:

    我想您的意思是您需要对记录 id 进行“重新编号”,以便不存在由删除造成的间隙,并且您有一系列整齐的 id,范围从 1 到 n,即记录数。

    可以这样做,但代价高昂 - 记录没有“更新”,只有添加/插入/删除操作。因此,您需要遍历所有记录,读取它们,删除它们并使用修改后的 id 将它们写回。以正确的顺序应用更改也可能很棘手。

    为什么需要消除差距?您可以使用 RecordStore enumerateRecords 方法返回的 RecordEnumeration 遍历完整集,“跳过”间隙。或者,您可以使用 getRecordIDs 方法获取当前 ID 集的数组。无论哪种情况,您都可以进行迭代而不会看到间隙。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-01
      • 1970-01-01
      • 2016-08-09
      • 1970-01-01
      • 1970-01-01
      • 2020-08-25
      • 1970-01-01
      相关资源
      最近更新 更多