这是在Recycler View中显示Parse Objects数据的方法吗?

时间:2015-09-13 18:09:10

标签: android object parse-platform android-recyclerview

我让人们推荐两种不同的做法让我感到困惑。

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)

重新创建对象

0 个答案:

没有答案