我已经执行了一个领域事务,并为我的数据模型传递了一个json数组。
public void execute(Realm realm){
for (int i = 0; i<menuListArray.length(); i++ ){
try{
JSONObject jObject = menuListArray.getJSONObject(i);
user.setMenuTitle(jObject.getString("title"));
realm.copyToRealm(user);
Intent intent = new Intent(getApplication(), ProfileLandingActivity.class);
startActivity(intent);
finish();
} catch (Exception e){
e.printStackTrace();
}
}
}
我已执行以下查询来获取对象
public RealmResults<User> getUserMenu() {
return realm.where(User.class).distinct("menuTitle");
}
我在另一项活动中使用领域结果getUserMenu()
:
RealmResults<User> users = RealmController.initialize(this).getUserMenu();
现在,如果我执行users.first()
,我只能从JSON获取第一个数据,如果我执行users.last()
,我只能从JSON获取最后一个数据。但是我必须从领域结果用户那里获取所有数据。我该如何从JSON获取所有数据?我必须将这些数据传递到数组列表中。
如果我的任何陈述没有达到开发人员的语言,请原谅我,因为我想成为一名。
答案 0 :(得分:1)
你必须在for循环之外使用Intent,如下所示......
public void execute(Realm realm){
for (int i = 0; i<menuListArray.length(); i++ ){
try{
JSONObject jObject = menuListArray.getJSONObject(i);
user.setMenuTitle(jObject.getString("title"));
realm.copyToRealm(user);
} catch (Exception e){
e.printStackTrace();
}
}
Intent intent = new Intent(getApplication(), ProfileLandingActivity.class);
startActivity(intent);
finish();
}
您可以使用此代码获取所有标题
for (User userData : users ) {
String title = userData.getMenuTitle();
}
答案 1 :(得分:0)
public void execute(Realm realm){
for (int i = 0; i < menuListArray.length(); i++) {
try{
JSONObject jObject = menuListArray.getJSONObject(i);
user.setMenuTitle(jObject.getString("title"));
realm.insert(user);
} catch (Exception e){
e.printStackTrace();
}
}
Intent intent = new Intent(getApplication(), ProfileLandingActivity.class);
startActivity(intent);
finish();
}
然后在其他活动中,使用带有RealmRecyclerViewAdapter的RecyclerView显示元素。
RecyclerView.Adapter adapter = new RealmRecyclerViewAdapter<User, UserViewHolder>(getContext(), RealmController.initialize(this).getUserMenu(), true) {
@Override
public UserViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new UserViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.view_user_item, parent, false));
}
@Override
public void onBindViewHolder(UserViewHolder holder, int position) {
User user = getData().get(position);
holder.menuTitle.setText(user.getMenuTitle());
}
};
recyclerView.setAdapter(adapter);