2016-10-27 1 views
-1

영역 트랜잭션을 실행하고 데이터 모델에 json 배열을 전달했습니다. 나는 단지 수 users.first()을 실행할 경우 지금영역 결과의 데이터를 배열 목록으로 전달하는 방법은 무엇입니까?

RealmResults<User> users = RealmController.initialize(this).getUserMenu(); 

:

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(); 
     } 
    } 
} 

는 내가 다른 활동 영역 결과 getUserMenu()을 사용하고

public RealmResults<User> getUserMenu() { 
    return realm.where(User.class).distinct("menuTitle"); 
} 

객체를 가져 오기 위해 다음과 같은 쿼리를 실행 한 JSON에서 첫 번째 데이터를 가져오고 users.last()을 실행하면 JSON에서 마지막 데이터 만 가져올 수 있습니다. 하지만 영역 결과 사용자로부터 모든 데이터를 가져와야합니다. JSON에서 모든 데이터를 가져 오려면 어떻게해야합니까? 그 데이터를 배열 목록에 전달해야합니다.

내 진술 중 하나가 개발자 언어를 충족하지 못하면 실례합니다.

당신은 다음과 같이 루프의 외부 의도를 사용할 필요가
+0

인 텐트를 통해 메뉴 제목 문자열 배열 목록을 전달해보십시오. –

+0

나는 그것을 할 수는 있지만 나중에 데이터 목적으로, 나는 영역을 올바르게 사용해야 할 수도있다. –

+0

copyToRealm 오버로드 된 메소드를 확인하십시오 : https://realm.io/docs/java/latest/api/io/realm/Realm.html#copyToRealm-io.realm.RealmObject- 나는 여러 객체를 반복 가능하게 복사 할 수 있다고 생각합니다. 명부. –

답변

1

...

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(); 
     } 
+0

@sagar pithiya –

+0

고맙습니다. 개발을 처음 접했을 때 모든 "제목"데이터를 배열에 전달할 것을 제안 하시겠습니까? –

+0

모든 제목을 배열로 읽으면 자동 업데이트 및 지연 평가가 적용되지 않습니다. -_- RecyclerView 및 RealmRecyclerViewAdapter 사용 – EpicPandaForce

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); 
관련 문제