[英]Can not convert RealmList<T> to JSONObject string android
我有2个活动,我想在单击列表项时将数据从活动1发送到活动2。 单击我可以获取映射到该ListItem的数据,该数据是一种RealmList类型。 我使用Gson库将模型转换为Json String。 如果我的数据是List类型,但我正在使用RealmList,则可以实现此目的。 当我尝试实现以下目标时,我的应用程序被冻结。
这是我的过滤器模型:
Filter filter = new Filter();
filter.setTitle("");
filter.setId("");
filter.setCode("");
RealmList就像:
RealmList<Filter> list = new RealmList<Filter>();
我试图将上述列表转换为JSONObject字符串,如下所示:
new Gson().toJson(filter))
以上直播给我以下错误:
PID: 12959 Reason: Input dispatching timed out (Waiting to send non-key event because the touched window has not finished processing certain input events that were delivered to it over 500.0ms ago. Wait queue length: 4. Wait queue head age: 5647.8ms.)
Load: 10.67 / 9.63 / 9.38
CPU usage from 1103ms to -6084ms ago:
101% 12959/com.anubavam.creatrix: 98% user + 3.4% kernel / faults: 6335 minor 15 major
44% 832/system_server: 25% user + 18% kernel / faults: 8128 minor 104 major
10% 1623/com.android.phone: 5.5% user + 5.4% kernel / faults: 4275 minor 57 major
3.6% 4304/android.process.media: 1.7% user + 1.9% kernel / faults: 4931 minor 73 major
0% 286/debuggerd: 0% user + 0% kernel / faults: 3205 minor 38 major
5.8% 91/kswapd0: 0% user + 5.8% kernel
5.8% 1272/com.android.systemui: 3.8% user + 1.9% kernel / faults: 2852 minor 39 major
4.5% 302/zygote: 3% user + 1.5% kernel / faults: 11239 minor
3.4% 1580/com.motorola.process.system: 2.3% user + 1.1% kernel / faults: 1881 minor 1 major
3.3% 153/mmcqd/0: 0% user + 3.3% kernel
注意List和ArrayList不会给我任何错误,它的工作文件。但是RealmList是问题所在。 我也尝试以下行,但没有用。
List<Filter> list = new RealmList<Filter>();
任何人都可以为此解决。
Realm当前不支持通过Intent传递数据。 可用的选项有
1)向第二个Activity发送一些唯一的ID,然后在第二个Activity中重新查询同一对象
2)也使用第三方包裹
您可能还需要添加依赖项
compile "org.parceler:parceler-api:x.x.x"
apt "org.parceler:parceler:x.x.x"
单击列表项时,我想将数据从活动1发送到活动2。
拆分数据并创建非托管/分离的数据副本是对Realm的滥用。
通过该意图发送数据的主键,然后在第二个活动中重新查询该对象。
Intent intent = new Intent(this, OtherActvity.class);
intent.putExtra("itemId", listItem.getId());
startActivity(intent);
public class OtherActivity extends AppCompatActivity {
Realm realm;
ListItem listItem;
@Override
public void onCreate(Bundle bundle) {
realm = Realm.getDefaultInstance();
super.onCreate(bundle);
listItem = realm.where(ListItem.class).equalTo("id", getIntent().getExtras().getString("itemId")).findFirst(); // re-query
// ...
}
@Override
public void onDestroy() {
realm.close();
realm = null;
super.onDestroy();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.