我在ParseObject中添加了一个与Users相关的关系,我希望填充已添加到listview上的关系的用户列表。这是我到目前为止所做的。
protected List<ParseUser> mCustomers;
ParseObject shopinfo= new ParseObject("Shopinfo");
// get the object from parse
ParseRelation<ParseUser> mCustomerRelation = shopinfo.getRelation(ParseConstants.KEY_CUSTOMER_RELATION);
mCustomerRelation.getQuery().findInBackground(new FindCallback<ParseUser>() {
@Override
public void done(List<ParseUser> customers, ParseException e) {
if(e==null){
mCustomers=customers;
String[] people= new String [mCustomers.size()];
int i=0;
for(ParseUser customer : mCustomers){
people[i]=customer.getusername;
i++;
}
ArrayAdapter<String>adapter=new ArrayAdapter<String>(getListView().getContext(),
android.R.layout.simple_list_item_1,people);
setListAdapter(adapter);
}
else {
AlertDialog.Builder builder = new AlertDialog.Builder(ResepActivity.this);
builder.setMessage(e.getMessage())
.setTitle(R.string.error_title)
.setPositiveButton(android.R.string.ok, null);
AlertDialog dialog = builder.create();
dialog.show();
}
}
});
我一直得到“java.lang.IllegalStateException:无法编码与未保存的ParseObject的关联”
答案 0 :(得分:1)
在你的for循环中:getUsername是一种方法,而且有一个资本&#39; U&#39;。您似乎错误地使用它。尝试:
people[i] = customer.getUsername();
编辑: 我在评论中收到有关问题的更多信息之后编辑了这个答案,但是,我的第一个答案仍然是修复了错误的代码。
在发布有关它的问题之前,请先阅读解析文档。您正在寻找的大部分答案都在文档中,它们非常好。
由于您拥有所需ParseObject的对象ID,因此可以创建该对象,然后获取该对象的关系。而不是
ParseObject shopinfo= new ParseObject("Shopinfo");
使用它:
ParseObject shopinfp = ParseObject.createWithoutData("Shopinfo", "objectID");
您可以使用此方法从数据库中创建所需的parse对象,而无需使用ParseQuery。如果您拥有所需对象的objectID,并且希望在代码中使用该对象,请使用此方法。