使用指针parse.com从两个类中获取相同objectids的数据

时间:2014-09-17 16:33:40

标签: java android sql parse-platform

Hashtag class with pointer as hashtagtype class objectid

hashtagtype clas

我有2个班级" HashTag"和" HashTagType"在parse.com上想要一个查询来点击Hashtag表和 现在我想通过浏览关系表来点击Hashtag表。 (关系表有一列,用于在Hashtag类中存储HashTagtype的对象ID,如在Pointer中)。 标签 - Objectid,标签,指针(Hashtagtype' s Objectids)

类列列表 -

指针列包含多个标记类型的相同对象ID的实例

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

需要一个查询,它会为一个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

1 个答案:

答案 0 :(得分:1)

最好的方法 - 尝试从解析中获取所有数据。同时将它们存储在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();
                                     }


                                }


                            }

                        }

                    }

                });