Проблема с RMS
У меня есть проблема с 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);
}
в то время как (recordEnumeration.hasNextElement())? Конечно с этой струной обрезки:P
хорошо, возможно я объясню проблему, которой я страдаю сейчас. Я создал приложение для мобильных устройств, которое до сих пор создает профиль пользователя и записывает его в RMS, и оно работает просто отлично. Алгоритм работает следующим образом: у пользователя запрашивается имя профиля и некоторые другие детали, когда он / она делает это, данные сохраняются. Схема записи выглядит следующим образом: Name_of_profile, модель, марка и т. Д. Чем программа обрезает записи, чтобы получить name_of_profile и помещает его в группу выбора. И это также выглядит как талисман, но настоящая проблема заключается в удалении, я могу удалить первую или вторую запись, но когда я ставлю новую [новый профиль], я получаю ошибку, подобную этой:
javax.microedition.rms.InvalidRecordIDException: запись поиска ошибки
1 ответ
Я предполагаю, что вы имеете в виду, что вам нужно "перенумеровать" идентификаторы записей, чтобы не было пропуска, созданного при удалении, и у вас был аккуратный ряд идентификаторов в диапазоне от 1 до n, количество записей.
Вы можете сделать это, но это будет дорого - для записей нет "обновления", только операции добавления / вставки / удаления. Таким образом, вам нужно будет перебрать все записи, прочитать их, удалить их и записать обратно с измененным идентификатором. Применение изменений в правильном порядке также может быть сложным.
Почему вы должны устранить пробелы? Вы можете перебирать весь набор, пропуская пропуски, используя RecordEnumeration, возвращаемый RecordStore enumerateRecords
метод. Или вы можете получить массив текущего набора идентификаторов, используя getRecordIDs
метод. В любом случае вы можете выполнять итерации, не видя пробелов.