你想要做的是爲那些盒裝原語實現自己的自定義列類型。
你將不得不做的唯一的事情是切換到一個數組字符串[]或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