我让人们推荐两种不同的做法让我感到困惑。
ParseQuery<ParseUser>query=ParseUser.getQuery();
query.include("addressPointer");
query.getInBackground(currentUser.getObjectId(), new GetCallback<ParseUser>() {
@Override
public void done(ParseUser parseUser, ParseException e) {
if (e==null){
List<ParseAddress> list=parseUser.getList("addressPointer");
if (list!=null){
for (ParseAddress address:list){
//Load data and add to mAdapter. This is where Im confused
}
mAdapter.notifyDataSetChanged();
}else {
Log.d(TAG, "address are 0");
Toast.makeText(MyAddress.this, "You have no addresses saved", Toast.LENGTH_LONG).show();
}
}else {Log.d(TAG, "error "+e.getMessage());}}});
从我所看到的,我有两个选项,一个是定义一个名为AppAddress()的对象,我可以从该对象加载数据,然后将其添加到适配器中,如下所示
//In onCreate
List<AppAddress> mAddressList=null;
//In the for loop.
AppAddress mAddress=new AppAddress();
mAddress.setName(address.getName());
mAddress.setCity(address.getCity());
mAddress.setPinCode(address.getPinCode());
mAddress.setPhoneNumber(address.getNumber());
mAddress.setAddress(address.getAddress());
mAddressList.add(mAddress);
或者我忘记了我的自定义对象类AppAddress,并使用我已经定义的用于从“地址”对象获取数据的名为ParseAddress的sublcass。在这种情况下,代码将是这样的
List<ParseAddress> mList=null;
//In the for loop
mList=new ArrayList<>();
mList.add(address);
在这两种情况下,我的recyclerView将从公共MyAddressAdapter(Context context, List<AppAddress> list)
更改为public MyAddressAdapter(Context context, List<ParseAddress> list)
,并在onBindViewHolder()函数中填写数据。我能够做到这两点,但假设recyclelerView将有“编辑”和“删除”这些“地址”类对象的按钮,哪一个会更好。
编辑:所以我想我会坚持第一种方法。截至目前,我通过这种方式定义了getter和setter以及移动数据。
的parseObject - &GT; AppAddress - &gt; RecyclerView行 - &gt;用户在AppAddress实体中编辑和更改数据 - &gt;更新关联的解析对象。这是我将要使用的流程。要完成最后一步,我需要为原始ParseObject(ParseAddress)设置setter和getter以及正确吗?
编辑编辑:两种方法都可以使用,但第一种方法将来可以提供更大的灵活性,因为App Address对象现在甚至可以是一个或多个解析对象的组合,或者具有与之关联的单独属性。对Andrey Elizarov的致谢。除了数据,我传递Parse Object的对象id并使用createWithNoData(“Address”,“objectId)
重新创建对象