我想从用户表中检索所有数据,并在用户插入时在listView中显示它。为此我在主活动中使用ListFragment,我还创建了User类来定义getter和setter函数,因为它在parse中是推荐的。 COM 问题是,当我运行我的应用程序时,它不会显示任何数据,也不会给我任何错误。
这是我的用户类的代码。
@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);
}
}
});
}
}
帮帮我
好吧我玩了我的代码,我改变了查询代码现在它给了我一些结果。查看此屏幕截图
更新的查询代码在这里
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);
}
}
});
答案 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);
答案 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);
}
我希望这会有所帮助。干杯:)