【问题标题】:get data of same objectids from two classes using pointer parse.com使用指针 parse.com 从两个类中获取相同对象 ID 的数据
【发布时间】:2014-09-17 16:33:40
【问题描述】:

我在 parse.com 上有 2 个类“HashTag”和“HashTagType”希望查询命中 Hashtag 表并 现在我想通过在关系表中导航来点击 Hashtag 表。 (关系表有一个列,该列将 HashTagtype 的对象 ID 存储在 Hashtag 类中,如 Pointer 中一样)。 Hashtag - Objectid, Tags, Pointer(Hashtagtype's Objectids)

类列列表-

指针列有多个相同的标记类型对象 id 实例

HashtagType - Objectid,Tagtype(无重复条目)

需要一个查询,它会给我一个标签类型(指针)的多个标签(至少 2 个)

ParseQuery<ParseObject> query = new ParseQuery<ParseObject>("HashTagType");
ParseQuery<ParseObject> query2 = new ParseQuery<ParseObject>("HashTag");

ob2 = query.find();
for (ParseObject object : ob2) {

    query2.whereEqualTo("parent", object.getObjectId());
    query2.include("parent");   //the pointer column it must have
    try {
        ob = query2.find(); //this holds the locations Table data
    }

我想在列表视图中显示

News -hashtagtype 
#breakingnews #echnology  #enterainment ...all tags of **NEWS** 


   Marketing  -hashtagtype 
    #smdata #ux #ecomchat #ecom #ecomerce .... all tags of Marketing

【问题讨论】:

    标签: java android sql parse-platform


    【解决方案1】:

    最好的方法 - 尝试从 parse 获取所有数据。同时将它们存储在 Pojo 类(arraylist)上,然后使用 for 循环过滤数据。

     public class ResultClass {
    
            public String type;
            public String tags;
            public ArrayList<String> listTags = new ArrayList<String>();
    
        }
    
        public class class2 {
    
    
            public String type;
            public String tag;
    
        }
        public class class1 {
    
    
            public String type;
    
        }
    ParseQuery<ParseObject> hashtag = ParseQuery.getQuery("HashTagType");
            hashtag.whereExists("TypeName");
    
            hashtag.findInBackground(new FindCallback<ParseObject>()
    
            {
    
                public void done(List<ParseObject> NameList, ParseException e)
    
                {
    
                    if (e == null)
    
                    {
                        if (NameList.size() > 0) {
    
                            for (int i = 0; i < NameList.size(); i++) {
    
                                // parsedata map = new parsedata();
    
                                ParseObject p = NameList.get(i);
                                String name = p.getString("TypeName");
                                Log.e("tyhpe name", "" + name);
                                // String tagid=p.getObjectId();
    
                                class1 c1 = new class1();
                                c1.type = "" + name;
                                listClass1.add(c1);
    
                                Hashtagtypes.add(name);
    
                            }
    
                            Log.d("hastags", listClass2.toString());
    
                            ParseQuery<ParseObject> query = ParseQuery
                                    .getQuery("HashTag");
                            query.whereExists("Tag");
                            query.orderByAscending("Type");
                            query.setLimit(1000);
    
                            query.findInBackground(new FindCallback<ParseObject>() {
    
                                @Override
                                public void done(List<ParseObject> list,
                                        ParseException e) {
                                    // TODO Auto-generated method stub
    
                                    if (e == null)
    
                                    {
                                        if (list.size() > 0) {
    
                                            for (int i = 0; i < list.size(); i++) {
    
                                                ParseObject p = list.get(i);
    
                                                String tagid = p.getString("Tag");
                                                String Type = p.getString("Type");
    
                                                class2 c2 = new class2();
    
                                                Log.e("hashtype", tagid);
                                                Log.e("hashtag", Type);
    
                                                c2.type = "" + Type;
                                                c2.tag = "" + tagid;
                                                listClass2.add(c2);
    
    
    
                                            }
    
                                        }
    
                                        for (int i = 0; i < listClass1.size(); i++) {
                                            ResultClass result = new ResultClass();
                                            result.type = listClass1.get(i).type;
                                            result.tags = "";
                                            Log.e("size at pos : " + i,
                                                    listClass2.size() + "");
    
                                            for (int j = 0; j < listClass2.size(); j++) {
                                                if (listClass1.get(i).type
                                                        .equals(listClass2.get(j).type)) {
                                                    result.listTags.add(listClass2
                                                            .get(j).tag);
    
                                                    result.tags += (listClass2
                                                            .get(j).tag + ",");
    
                                                    // --removing from list for
                                                    // performance reason
                                                    listClass2.remove(j);
    
                                                }
                                            }
    
                                            listResult.add(result);
    
                                        }
    

    这不是最好的方法。这将改善 api 调用

     final ArrayList<String> Hashtagtypes = new ArrayList<String>();
    
                    ParseQuery<ParseObject> hashtag = ParseQuery
                            .getQuery("HashTagType");
                    hashtag.whereExists("TypeName");
    
                    hashtag.findInBackground(new FindCallback<ParseObject>()
    
                    {
    
                        public void done(List<ParseObject> NameList, ParseException e)
    
                        {
    
                            if (e == null)
    
                            {
                                if (NameList.size() > 0) {
    
                                    for (int i = 0; i < NameList.size(); i++) {
    
                                        parsedata map = new parsedata();
    
                                        ParseObject p = NameList.get(i);
                                        String name = p.getString("TypeName");
                                        // String tagid=p.getObjectId();
                                        map.setHashtag(name);
    
                                        Hashtagtypes.add(name);
    
                                         ParseQuery<ParseObject> query =
                                         ParseQuery.getQuery("HashTag");
                                         query.whereEqualTo("Type", name);
    
                                         query.include("parent");
                                         query.setLimit(2);
    
                                         try {
    
    
                                         List <ParseObject>ob = query.find();
    
                                         StringBuilder sb = new StringBuilder();
    
                                         for (ParseObject country : ob) {
                                         // Locate images in flag column
    
    
                                         country.get("Tag");
                                         sb.append(country.getString("Tag"));
    
    
                                         }
                                         // map.setHashtag(sb.toString());
    
                                         // totaltaglist.add(map);
                                         tagsdata.add(sb.toString());
    
    
                                         }
    
                                         catch (ParseException e1) {
                                         // TODO Auto-generated catch block
                                         e1.printStackTrace();
                                         }
    
    
                                    }
    
    
                                }
    
                            }
    
                        }
    
                    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-23
      • 1970-01-01
      • 2022-01-08
      • 1970-01-01
      • 1970-01-01
      • 2017-04-18
      相关资源
      最近更新 更多