[英]Using Parse.com pointers to query data from two classes , pointer value exception
[英]get data of same objectids from two classes using pointer parse.com
我在parse.com上有2個類“ HashTag”和“ HashTagType”,希望查詢命中Hashtag表,現在我想通過在關系表中導航來命中Hashtag表。 (關系表具有一列,用於存儲Hashtag類中HashTag類型的對象ID,如Pointer中所示)。 Hashtag-Objectid,標簽,指針(Hashtagtype的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
最好的方法-嘗試從解析中獲取所有數據。 檢索時將它們存儲在Pojo類(數組列表)上,然后使用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();
}
}
}
}
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.