代码之家  ›  专栏  ›  技术社区  ›  user6008330

如何将解析对象传递到片段中的列表?

  •  0
  • user6008330  · 技术社区  · 8 年前

    我在tablayout中有2个片段,必须根据parse数据库的用户填写。

    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            Parse.initialize(this);
            ParseInstallation.getCurrentInstallation().saveInBackground();
    
            setContentView(R.layout.activity_main);
            .......
    
            ParseQuery<ParseObject> query = ParseQuery.getQuery("Items");
            // this will find the user.
            // then find the first instance
            query.findInBackground(new FindCallback<ParseObject>() {
                @Override
                public void done(List<ParseObject> objects, com.parse.ParseException e) {
                    List<Items> 1List = new ArrayList<Items>();
                    List<Items> 2List = new ArrayList<Items>();
                    if (objects == null) {
                        Log.d("nothing found", "let's go ahead and create a new object.");
                        //ADD THE OBJECT AS A NEW OBJECT!!!!
                    } else {
                        for(i=0;objects.size() > 0;i++) {
                            ParseObject parseObject = objects.get(i);
                            if(parseObject.getString("iduser").equals(ID_1)){
    
                                1List.add(objects.get(i));//ERROR HOW TO FIX?
                                /*THIS ERROR add
                                (com.dev.bob.recife3.persistence.Items)
                                        in List cannot be applied
                                        to
                                (com.parse.ParseObject)*/
    
                            }else{
                                2List.add(objects.get(i));//ERROR HOW TO FIX?
                                /*THIS ERROR add
                                (com.dev.bob.recife3.persistence.Items)
                                        in List cannot be applied
                                        to
                                (com.parse.ParseObject)*/
                            }
                            if (getFragmentRefreshListener1() != null) {
                                getFragmentRefreshListener1().onRefresh(new ItemsAdapter(getContext(), 1List));
                            }
    
                            if (getFragmentRefreshListener2() != null) {
                                getFragmentRefreshListener2().onRefresh(new ItemsAdapter(getContext(), 2List));
                            }
                            String test = parseObject.getString("name").toString();//JUST A TEST
                            Log.d("points found", "" + "");
                        }
                    }
                }
            });
        }
        ........
        public class SectionPagerAdapter extends FragmentPagerAdapter {
    
            public SectionPagerAdapter(FragmentM2ger fm) {
                super(fm);
            }
    
            @Override
            public Fragment getItem(int position) {
                switch (position) {
                    case 0:
                        return new 2TabFragment();
                    case 1:
                        return new 1TabFragment();
                    default:
                        return new 2TabFragment();
                }
            }
    
            @Override
            public int getCount() {
                return 2;
            }//retorna as duas abas estaticamente
    
            @Override
            public CharSequence getPageTitle(int position) {
                switch (position) {
                    case 0:
                        return getString(R.string.2);
                    case 1:
                        return getString(R.string.1);
                    default:
                        return getString(R.string.2);
                }
            }
        }
        private Context getContext(){
            return this;
        }
    
        public FragmentRefreshListener getFragmentRefreshListener1() {
            return fragmentRefreshListener1;
        }
    
        public void setFragmentRefreshListener1(FragmentRefreshListener fragmentRefreshListener1) {
            this.fragmentRefreshListener1 = fragmentRefreshListener1;
        }
    
        private FragmentRefreshListener fragmentRefreshListener1;
    
        public interface FragmentRefreshListener{
            void onRefresh(ItemsAdapter itemsAdapter);
        }
    
    
        public FragmentRefreshListener2 getFragmentRefreshListener2() {
            return fragmentRefreshListener2;
        }
    
        public void setFragmentRefreshListener2(FragmentRefreshListener2 fragmentRefreshListener2) {
            this.fragmentRefreshListener2 = fragmentRefreshListener2;
        }
    
        private FragmentRefreshListener2 fragmentRefreshListener2;
    
        public interface FragmentRefreshListener2{
            void onRefresh(ItemsAdapter itemsAdapter);
        }
    }
    

    我如何获得片段,从解析中得到的列表? 如何传递这些数据,并使该列表显示在正确的片段中?代码中注释了错误,这是:

    1列表。添加(objects.get(i));                                 列表中的不能应用 到

    遵循数据库的图像: enter image description here

    2 回复  |  直到 8 年前
        1
  •  0
  •   Shu Zhang    8 年前

    您可以将查询从泛型更改为 ParseObject 进入 Items 这样地。

    ParseQuery<Items> query = ParseQuery.getQuery(Items.class);
    query.findInBackground(new FindCallback<Items>() {
        @Override
        public void done(List<Items> objects, com.parse.ParseException e) {
        }
    });
    

    这可以解决撞车问题。了解如何将数据传递到片段中。如果您先修复了崩溃,那么稍后可能会出现这种情况。

        2
  •  0
  •   user6008330 user6008330    8 年前

    我将适配器更改为接收parseobject:

    List<ParseObject> 1List= new ArrayList<ParseObject>();
    if (getFragmentRefreshListener1() != null) {
                                getFragmentRefreshListener1().onRefresh(new ItemsAdapter(getContext(), 1List));
                            }
    
                            if (getFragmentRefreshListener2() != null) {
                                getFragmentRefreshListener2().onRefresh(new ItemsAdapter(getContext(), 2List));
                            }
    

    还有我的ItemsAdapter:

    public ItemsAdapter(Context context, List<ParseObject> items) {
        super();
        this.context = context;
        this.itemsList = items;
    }