我正在使用gson进行改造,将我的json反序列化为领域对象.这在大多数情况下都非常有效.处理时遇到麻烦
RealmList(String(或任何其他基本数据类型))
由于Realm不支持RealmList,其中E不扩展Realm对象,我将String包装在RealmObject中.
public class RealmString extends RealmObject {
private String val;
public String getValue() {
return val;
}
public void setValue(String value) {
this.val = value;
}
}
Run Code Online (Sandbox Code Playgroud)
我的领域对象如下
public class RealmPerson extends RealmObject {
@PrimaryKey
private String userId;
...
private RealmList<RealmString> stringStuff;
private RealmList<SimpleRealmObj> otherStuff;
<setters and getters>
}
Run Code Online (Sandbox Code Playgroud)
SimpleRealmObj工作正常,因为它只有String元素
public class SimpleRealmObj extends RealmObject {
private String foo;
private String bar;
...
}
Run Code Online (Sandbox Code Playgroud)
如何反序列化stringStuff?我尝试使用gson TypeAdapter
public class RealmPersonAdapter extends TypeAdapter<RealmPerson> {
@Override
public void write(JsonWriter out, RealmPerson …Run Code Online (Sandbox Code Playgroud) 我有一个在较小屏幕上全屏的对话碎片,但对于较大的屏幕具有一定的尺寸.
该对话框在页脚中有一个编辑文本字段和几个操作按钮.我需要调整对话框片段的大小,以便在键盘对焦时按钮位于软键盘上方.
在较小的屏幕上,以下代码段可确保对话框调整大小.
<style name="fullScreenDialog" parent="android:Theme">
<item name="android:windowSoftInputMode">adjustResize</item>
</style>
Run Code Online (Sandbox Code Playgroud)
对于较大的屏幕,尺寸设置如下.
@Override
public void onStart() {
super.onStart();
if (EPHelper.deviceHasLargeScreen()) {
Dialog d = getDialog();
Window w = d.getWindow();
if (dimenH > 0 && dimenW > 0) {
w.setLayout(dimenW, dimenH);
}
Run Code Online (Sandbox Code Playgroud)
我尝试在onViewCreated中使用SOFT_INPUT_ADJUST_RESIZE
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
Window w = getDialog().getWindow();
w.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,这不起作用.我注释掉代码来设置布局尺寸,并且中提琴可以工作.因此,设置布局参数似乎阻碍了调整大小.
有没有更好/推荐的方法让这两者一起工作 - >显示软键盘时,对话框片段和屏幕的自定义屏幕大小调整大小.