Что вы хотите сделать, это реализовать свой собственный тип столбца для тех вложенных в бокс примитивов.
Единственное, что вам нужно сделать, это переключить их на Array String [] или int [], поскольку вы не сможете получить тип, используя ArrayList. Вот специальный столбец int [].
public class IntArrayColumn implements RushColumn<int[]> {
private static final String DELIMITER = ",";
@Override
public String sqlColumnType() {
return "varchar(255)";
}
@Override
public String serialize(int[] ints, RushStringSanitizer rushStringSanitizer) {
return rushStringSanitizer.sanitize(join(ints));
}
@Override
public int[] deserialize(String s) {
return split(s);
}
@Override
public Class[] classesColumnSupports() {
return new Class[]{int[].class};
}
private String join(int[] ints) {
if (ints.length > 0) {
StringBuilder sbuild = new StringBuilder();
for (int i = 0; i < ints.length; i++) {
sbuild.append(ints[i]).append(DELIMITER);
}
sbuild.delete(sbuild.lastIndexOf(DELIMITER), sbuild.length());
return sbuild.toString();
} else {
return "";
}
}
private int[] split(String source) {
if (source != null) {
if (source.isEmpty()) {
return new int[0];
}
String[] items = source.split(DELIMITER);
int[] ints = new int[items.length];
for (int i = 0; i < ints.length; i++) {
ints[i] = Integer.valueOf(items[i]);
}
return ints;
}
return null;
}
}
Затем измените функцию инициализации, чтобы выглядеть так.
AndroidInitializeConfig config = new AndroidInitializeConfig(getApplicationContext());
config.addRushColumn(new IntArrayColumn());
RushCore.initialize(config);
Единственное падение - вы не сможете запросить что-либо, это список.
Надеюсь, что это поможет.
Вы только что поняли, что поля, которые я объявлял ArrayLists, не изменяются в любом случае, поэтому, превратив их в массивы и добавив для них настраиваемый столбец, это технически решает мою проблему. Спасибо за помощь! – nulldev