2014-02-25 3 views
0

parse.com을 사용하여 메시지 응용 프로그램을 개발하면 일부 데이터 센터 클래스가 파스 com에 있습니다.안드로이드 parse.com 연결 오류

사용자 정의 클래스 유형 인 경우 열의 데이터를 목록보기에 바인딩 할 수 있습니다. 클래스 유형 사용자 또는 설치, 내 데이터를 가져올 수 없습니다 및 listview 바인딩하십시오. 나는 이것에 대한 보안 규칙이 있다고 생각한다. 글쎄, 내가 어떻게 "사용자"및 "설치"클래스 유형에 대한 가치를 얻을 수 있습니까?

내 코드가 있는데 무엇을 추가 할 수 있습니까? 또한 당신은 당신의 자신의 설치 개체를 얻을 수 https://parse.com/questions/how-can-i-find-parse-users-that-are-facebook-friends-with-the-current-user

:

@Override 
    protected Void doInBackground(Void... params) { 
     // Locate the class table named "User" in Parse.com 


     ParseQuery<ParseObject> query = new ParseQuery<ParseObject>(
       "User"); 

     //query.orderByDescending("_created_at"); 


     try { 
      ob = query.find(); 
     } catch (ParseException e) { 
      Log.e("Error", e.getMessage()); 
      e.printStackTrace(); 
     } 
     return null; 
    } 

@Override 
    protected void onPostExecute(Void result) { 
     // Locate the listview in listview_main.xml 
     listview = (ListView) findViewById(R.id.listview); 
     // Pass the results into an ArrayAdapter 
     adapter = new ArrayAdapter<String>(MainActivity.this, 
       R.layout.listview_item); 
     // Retrieve object "name" from Parse.com database 
     for (ParseObject users : ob) { 
      adapter.add((String) users.get("username")); 
     } 
     // Binds the Adapter to the ListView 
     listview.setAdapter(adapter); 
     // Close the progressdialog 
     mProgressDialog.dismiss(); 

     // Capture button clicks on ListView items 
     listview.setOnItemClickListener(new OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, 
        int position, long id) { 
       // Send single item click data to SingleItemView Class 
       Intent i = new Intent(MainActivity.this, 
         SingleItemView.class); 
       // Pass data "username" followed by the position 
       i.putExtra("username", ob.get(position).getString("username") 
         .toString()); 
       // Open SingleItemView.java Activity 
       startActivity(i); 
      } 
     }); 
    } 

답변

1

사용자 개체가 개인이며, 빠른 구글 검색은 저에게이했다. 당신은 최고 기록, 말의 목적을 위해 사용자를 나열해야하는 경우

, 당신이 포함 된 최고 점수 개체를 만들 수 있습니다 점수를 저장할 때 당신이 사용자에 점수 열을 추가 할 수 있습니다

username, score 

또는 필요에 따라 Parseinstallation. 이렇게하면 사용자는 자신의 최고 기록을 쉽게 참조 할 수 있습니다. 공개적으로 읽을 수 없게하는 ACL이 없는지 확인하십시오.

이제 Highscores 개체를 쿼리 할 수 ​​있습니다.

간단히 말해서, 자신의 개체에서 쿼리하려는 것들을 제외하고 사용자/설치에 대한 참조를 추가하십시오.

username, score, owner 

나는 그것이 사용자인지 여부, 당신은 소유자의 OBJECTID를 얻을 수 있습니다 꽤 확신 : 최고 점수의 소유자에 대한 참조를 유지 아마도

또는 더 쉽게, 주위에 다른 방법으로, 또는 설치. 그래서 'owner.objectId.equals (myUser.objectId)'가 유효한 하이 스코어 찾기와 같은 쿼리가 필요합니다.

다음은 내 애플리케이션 스 니펫입니다. 필자는 parse.com 객체에 설정 (sharedpreferences)을 저장하여 장치간에 프로파일을 공유 할 수 있습니다 (구문 분석은 모든 구문 분석 중심의 컨트롤러로 자체를 구현 한 객체로, 구문 분석 라이브러리 자체) :

private void create() { 
    cat.removeAll(); 
    switchPrefs = new ArrayList<SwitchPreference>(); 

    currentProfile = parse.getParseProfile().getProfile(); 

    parse.getParseProfile().getProfiles(new FindCallback<ParseObject>() { 

     @Override public void done(List<ParseObject> objects, 
       ParseException e) { 
      if (e == null) { 
       profiles = objects; 
       for (ParseObject profile : profiles) { 
        addProfile(profile); 
       } 
      } 
     } 
    }); 
} 


private void addProfile(ParseObject profile) { 
    SwitchPreference switchPref = new SwitchPreference(getActivity()); 
    switchPref.setTitle(profile.getString(ParseObjectHelper.Profile.name)); 
    switchPref.setOrder(switchPrefs.size()); 
    // switchPref.setKey(String.valueOf(profiles.size())); 
    if (currentProfile != null 
      && profile.getObjectId().equals(currentProfile.getObjectId())) { 
     switchPref.setChecked(true); 
    } else { 
     switchPref.setChecked(false); 
    } 

    switchPref.setOnPreferenceChangeListener(new OnProfileChanged()); 

    cat.addPreference(switchPref); 
    switchPrefs.add(switchPref); 

    if (!profiles.contains(profile)) { 
     profiles.add(profile); 
    } 
} 

따라서 현재 사용자에게 연결된 각 프로필에는 SwitchPreference가 추가됩니다.

public void createProfile(final String profilename, 
     final GetCallback<ParseObject> callback) { 

    final ParseObject newProfile = new ParseObject(
      ParseObjectHelper.Profile.objectname); 
    newProfile.put(ParseObjectHelper.Profile.name, profilename); 

    // the users ParseUser object 
    newProfile.put(ParseObjectHelper.Profile.owner, parseUser); 
    Map<String, ?> preferences = PreferenceManager 
      .getDefaultSharedPreferences(context).getAll(); 
    for (String key : preferences.keySet()) { 
     if (key.startsWith("key")) { 
      newProfile.put(key, preferences.get(key)); 
     } 
    } 
    newProfile.saveEventually(new SaveCallback() { 

     @Override public void done(ParseException e) { 
      callback.done(newProfile, e); 
     } 
    }); 
} 
+0

좋아, 내가 어떻게이 방법을 구현할 수 있습니다

public void getProfiles(FindCallback<ParseObject> callback) { ParseQuery<ParseObject> query = ParseQuery .getQuery(ParseObjectHelper.Profile.objectname); query.whereEqualTo(ParseObjectHelper.Profile.owner, parseUser); query.findInBackground(callback); } 

다음 내가 할 새 프로필을 만들려면 : 여기

는 getProfiles에 대한 코드 (..)를인가? –

관련 문제