无法从用户表parse.com

时间:2015-09-06 16:01:55

标签: android android-studio parse-platform

我想从用户表中检索所有数据,并在用户插入时在listView中显示它。为此我在主活动中使用ListFragment,我还创建了User类来定义getter和setter函数,因为它在parse中是推荐的。 COM 问题是,当我运行我的应用程序时,它不会显示任何数据,也不会给我任何错误。

这是parse.com上的用户表 enter image description here

这是我的用户类的代码。

@ParseClassName("User")
public class User extends ParseObject {

public User(){}

public  String getUsername(){
    return getString("username");
}
public void setUsername(String username){
    put("username",username);
}

public  String getLatitude(){
    return getString("Latitude");
}
public void setLatitude(String latitude){
    put("Latitude",latitude);
}
public String getLongitude(){
    return getString("Longitude");
}
public void setLongitude(String longitude){
    put("Longitude",longitude);
}
public void setBloodType(String bloodType){put("Bloodtype",bloodType);}
public String getBloodType(){return getString("Bloodtpye");}

@Override
public String toString() {
    return getString("username") + "\n" + getString("Longitude") + "\n" + getString("Latitude")+ "\n"+getString("Bloodtype");
}
}

这里是我片段的代码

 public class Fragment extends ListFragment {

List<User> user1 = new ArrayList<>();

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    return inflater.inflate(R.layout.fragment_layout,container,false);
}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    ParseQuery<User> query = new ParseQuery<User>("User");
    query.findInBackground(new FindCallback<User>() {
        @Override
        public void done(List<User> list, ParseException e) {
            if(e !=null){
                Toast.makeText(getActivity(),"Error"+e,Toast.LENGTH_SHORT).show();
            }
            else {
                for (User user : list){
                    User newUser = new User();
                    newUser.setUsername(user.getUsername());
                    newUser.setLatitude(user.getLatitude());
                    newUser.setLongitude(user.getLongitude());
                    newUser.setBloodType(user.getBloodType());
                    user1.add(newUser);
                }

                ArrayAdapter<User> adapter = new ArrayAdapter<User>(getActivity(),android.R.layout.simple_list_item_1,user1);
                setListAdapter(adapter);
            }
        }
    });

}
}

帮帮我

好吧我玩了我的代码,我改变了查询代码现在它给了我一些结果。查看此屏幕截图

enter image description here

更新的查询代码在这里

ParseQuery<ParseUser> query = ParseUser.getQuery();
    query.findInBackground(new FindCallback<ParseUser>() {
        @Override
        public void done(List<ParseUser> list, ParseException e) {
            if(e==null){
                for (ParseUser user :list){
                    ParseUser newUser = new ParseUser();
                    newUser.getString(user.getString("username"));
                    newUser.getString(user.getString("Latitude"));
                    newUser.getString(user.getString("Longitude"));
                    newUser.getString(user.getString("Bloodtype"));
                    newUser.getString(user.getString("Mobile"));
                    user1.add(newUser);

                }
                ArrayAdapter<ParseUser> adapter = new ArrayAdapter<ParseUser>(getActivity(),android.R.layout.simple_list_item_1,user1);
                setListAdapter(adapter);
            }
        }
    });

2 个答案:

答案 0 :(得分:0)

我认为对象的可访问性存在问题。你应该玩ParseACL。

默认ACL可以轻松创建遵循常见访问模式的应用程序。例如,像Twitter这样的应用程序,其中用户内容通常对全世界可见,可以设置默认ACL,例如:

ParseACL defaultACL = new ParseACL();
defaultACL.setPublicReadAccess(true);
ParseACL.setDefaultACL(defaultACL, true);

对于像Dropbox这样的应用程序,用户的数据只能由用户自己访问,除非给出明确的权限,否则你将提供一个默认ACL,只允许当前用户访问:

ParseACL.setDefaultACL(new ParseACL(), true);

将数据记录到Parse但不提供任何用户对该数据的访问权限的应用程序会在提供限制性ACL时拒绝访问当前用户:

ParseACL.setDefaultACL(new ParseACL(), false);

查看https://parse.com/docs/android/guide

答案 1 :(得分:0)

试试这个

让用户扩展ParseUser而不是ParseObject。

public class User extends ParseUser 

并使用旧代码设置适配器,即

else {
            for (User user : list){
                User newUser = new User();
                newUser.setUsername(user.getUsername());
                newUser.setLatitude(user.getLatitude());
                newUser.setLongitude(user.getLongitude());
                newUser.setBloodType(user.getBloodType());
                user1.add(newUser);
            }

            ArrayAdapter<User> adapter = new ArrayAdapter<User>(getActivity(),android.R.layout.simple_list_item_1,user1);
            setListAdapter(adapter);
        }

我希望这会有所帮助。干杯:)