【问题标题】:How to get a List<ParseUser> of Parse usernames?如何获取 Parse 用户名的 List<ParseUser>?
【发布时间】:2015-11-22 07:04:38
【问题描述】:

我的活动中有此代码:

ParseQuery<ParseUser> query = ParseUser.getQuery();
    query.findInBackground(new FindCallback<ParseUser>() {
        public void done(List<ParseUser> userList, ParseException e) {
            if (e == null) {
                Log.d("score", "Retrieved " + userList.size() + " scores");
                for (int i = 0; i < userList.size(); i++) {
                    friends.add(userList.toString());
                }
                aAdapter = new ArrayAdapter<String>(context, android.R.layout.simple_dropdown_item_1line, friends);
                friendChooser.setAdapter(aAdapter);
            } else {
                Log.d("score", "Error: " + e.getMessage());
            }
        }
    });

问题是这个数组包含所有列,当我只想获取“用户名”字段时。如何仅获取“用户名”字段?
另一个问题是,因为在 User 表中有一个名为“emailVerified”的布尔字段,而 aAdapter 是一个ArrayAdapter&lt;String,它里面不能有布尔值,所以应用程序崩溃了。再说一遍,我怎样才能只得到“用户名”字段?

崩溃的Logcat:

java.lang.NullPointerException: Attempt to invoke interface method 'boolean java.util.List.add(java.lang.Object)' on a null object reference
        at com.intap.tof.GameActivity$3.done(GameActivity.java:189)
        at com.intap.tof.GameActivity$3.done(GameActivity.java:184)
        at com.parse.ParseTaskUtils$2$1.run(ParseTaskUtils.java:107)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:145)
        at android.app.ActivityThread.main(ActivityThread.java:5832)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)

@MarcoBatista 的回答导致 Logcat 崩溃:

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.content.Context.getSystemService(java.lang.String)' on a null object reference
        at android.widget.ArrayAdapter.init(ArrayAdapter.java:310)
        at android.widget.ArrayAdapter.<init>(ArrayAdapter.java:153)
        at com.intap.tof.GameActivity$3.done(GameActivity.java:192)
        at com.intap.tof.GameActivity$3.done(GameActivity.java:184)
        at com.parse.ParseTaskUtils$2$1.run(ParseTaskUtils.java:107)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:145)

错误行:
GameActivity.java:192 - friendChooser.setAdapter(aAdapter);
GameActivity.java:184 - public void done(List&lt;ParseUser&gt; userList, ParseException e) {

为您:
aAdapter 是一个ArrayAdapter&lt;String&gt;
friendChooserMultiAutoCompleteTextView
friendsList&lt;String&gt;
userListList&lt;ParseUser&gt;

【问题讨论】:

  • for (ParseUser friend : userList) { friends.add(friend.getString("username")); }
  • friends.add(userList.toString()); 你觉得这有什么作用?

标签: android list parse-platform android-arrayadapter multiautocompletetextview


【解决方案1】:

而不是这个:

 friends.add(userList.toString());

试试这个:

 friends.add(userList.get(i).getUsername());

【讨论】:

  • 它仍然崩溃。我会将 logcat 添加到我的问题中。
【解决方案2】:

您必须从列表中获取对象,然后从中获取用户名 (docs):

ParseQuery<ParseUser> query = ParseUser.getQuery();
query.findInBackground(new FindCallback<ParseUser>(){
    public void done(List<ParseUser> userList, ParseException e) {
        if (e == null) {
            Log.d("score", "Retrieved " + userList.size() + " scores");
            friends = new ArrayList<>();//<-- Initialize the String array
            for (int i = 0; i < userList.size(); i++) {
                friends.add(userList.get(i).getUsername());
            }
            aAdapter = new ArrayAdapter<String>(context, android.R.layout.simple_dropdown_item_1line, friends);
            friendChooser.setAdapter(aAdapter);
        } else {
            Log.d("score", "Error: " + e.getMessage());
        }
    }
});

【讨论】:

  • 它仍然崩溃。我会将 logcat 添加到我的问题中。
  • 你必须初始化friends数组,我会用初始化编辑答案
  • 它仍然崩溃,但现在它显示不同的错误消息:Attempt to invoke virtual method 'java.lang.Object android.content.Context.getSystemService(java.lang.String)' on a null object reference。我该怎么做才能解决这个问题?
  • 使用完整的 logcat 和导致崩溃的行更新您的问题
  • @MarcoBatista 我现在就做
猜你喜欢
  • 1970-01-01
  • 2015-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-13
  • 2015-06-29
相关资源
最近更新 更多