Android无法使用for循环从Parse.com数据库获取用户数据

时间:2014-07-07 04:25:01

标签: android android-listview parse-platform

我希望基于一些查询从parse.com数据库中获取一些用户的名字,我正在使用for循环来获取用户并使用自定义适配器和代码将其加载到listview中我用过的是:

query.findInBackground(new FindCallback<ParseUser>() {

    @Override
    public void done(List<ParseUser> pusers, ParseException e) {
        // TODO Auto-generated method stub
        if (e==null) {
            for (ParseUser pu : pusers) {
                Users1[] data = new Users1[] {
                    new Users1(pu.getString("Name"), true)
                };
            }
            UserListAdapter mUserAdapter = new UserListAdapter(getBaseContext(), R.layout.user_list_item, data);                        
        } else {
            AlertDialog.Builder builder = new AlertDialog.Builder(ManualInviteActivity.this);
            builder.setMessage(R.string.login_error_message);
            builder.setTitle(R.string.login_error_title);
            builder.setPositiveButton(android.R.string.ok, null);
            AlertDialog dialog = builder.create();
            dialog.show();
        }
    }
});

当我尝试在数据&#39;数据处初始化适配器时出现错误当我已经创建数据时,它表示数据无法解析为变量。我该如何解决? 感谢

2 个答案:

答案 0 :(得分:2)

你做错了什么,每次进入循环时都要初始化数组,即

for(ParseUser pu : pusers)
{
   Users1[] data = new Users1[]
   {
         new Users1(pu.getString("Name"), true) // here every time new instance is created.
   }
}

所以不是这样,而是在for循环之外初始化它 -

Users1[] data = new Users1 [pusers.size()];

然后开始你的for循环

int i = 0;
for(ParseUser pu : pusers)
{
   Users1 user=new Users1(pu.getString("Name"), true);
   data[i]= user;
   i++;     
}
UserListAdapter mUserAdapter = new UserListAdapter(getBaseContext(), R.layout.user_list_item, data);

答案 1 :(得分:1)

而不是代码:

                       if(e==null)
                        {
                            for(ParseUser pu : pusers)
                            {
                                Users1[] data = new Users1[]
                                        {
                                        new Users1(pu.getString("Name"), true)
                                        };
                            }
                            UserListAdapter mUserAdapter = new UserListAdapter(getBaseContext(), R.layout.user_list_item, data);

                        }

使用此更正后的代码:

                         if(e==null)
                            {
                            Users1[] data = null;
                            int i=0;  

                            for(ParseUser pu : pusers)
                            {

                                  if(data==null){
                                     data = new Users1[pusers.size()];
                                   }                                            

                                   Users1 user=new Users1(pu.getString("Name"), true);
                                   data[i]= user;
                                   i++;     
                            }
                            UserListAdapter mUserAdapter = new UserListAdapter(getBaseContext(), R.layout.user_list_item, data);

                        }