如何将数据从领域结果传递到数组列表?

时间:2016-10-27 04:41:56

标签: java android realm

我已经执行了一个领域事务,并为我的数据模型传递了一个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获取所有数据?我必须将这些数据传递到数组列表中。

如果我的任何陈述没有达到开发人员的语言,请原谅我,因为我想成为一名。

2 个答案:

答案 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);
相关问题