Я использую http://quickblox.com/developers/SimpleSample-customObjects-android#Search_operators, чтобы найти ключевые слова в типе данных «Array».Как искать в массивах Quickblox
Но он ищет только первую строку в массиве. Как искать среди всех строк в массиве?
public static void getNews(final Context context, final Handler handler, final int page) {
ArrayList<String> catSearch = new ArrayList<>();
ArrayList<NewsCategory> categories = Cache.getNewsCategories(context);
for(NewsCategory category : categories) {
if(Cache.isCategoryChecked(context, category.getId())) {
catSearch.add(category.getId());
}
}
ArrayList<String> tagSearch = new ArrayList<>();
ArrayList<NewsTag> tags = Cache.getNewsTags(context, Cache.SELECTED_TAGS);
for(NewsTag tag : tags) {
tagSearch.add(tag.getTitle());
}
QBRequestGetBuilder builder = new QBRequestGetBuilder();
if(tagSearch.size() == 0) {
builder.ctn("LangId", Cache.getNewsLanguage(context)).
in("CategoryId", catSearch.toArray());
} else {
builder.ctn("LangId", Cache.getNewsLanguage(context)).in("Tags", tagSearch.toArray()).
in("CategoryId", catSearch.toArray());
}
QBCustomObjects.getObjects("News", builder,
new QBEntityCallbackImpl<ArrayList<QBCustomObject>>() {
@Override
public void onSuccess(ArrayList<QBCustomObject> customObjects, Bundle params) {
ArrayList<String> images = new ArrayList<>();
ArrayList<News> newsArray = new ArrayList<>();
for (QBCustomObject object : customObjects) {
try {
HashMap<String, Object> pairs = object.getFields();
String id = object.getCustomObjectId();
long created = object.getCreatedAt().getTime();
News news = new News(pairs, id, created);
newsArray.add(news);
Log.e("", "Tags: " + pairs.get("Tags"));
if (!news.getPhoto().equals("")) {
images.add(news.getPhoto());
}
} catch (Exception e) {
e.printStackTrace();
}
}
Cache.saveNews(context, newsArray);
if (handler != null) {
handler.sendEmptyMessage(6);
}
}
@Override
public void onError(List<String> errors) {
Helper.showErrorToast(context, errors);
if (handler != null) {
handler.sendEmptyMessage(1);
}
}
});
}
UPD:
Мы провели некоторые исследования, и вот результаты:
1. Когда мы ищем тег "Русский":
QBRequestGetBuilder builder = new QBRequestGetBuilder();
builder.in("Tags", "Русский");
https://api.quickblox.com/data/News.json?Tags[in]=%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9
РЕЗУЛЬТАТЫ:
news id: 55b4a74f535c12b641004f3e; теги: [Русский, советы]
news id: 55b91b78535c129a1d0039f2; теги: [Русский, Россия]
news id: 55ba9482535c1238ce003522; теги: [Русский, Россия]
news id: 55ba96c4535c1298ec0003fc; теги: [Русский, советы]
news id: 55ba973f535c1298ec0004d7; теги: [Русский]
news id: 55ba9967535c12e2c00017f9; теги: [Русский, Россия]
news id: 55ba99e3535c1298ec00099f; теги: [Русский, Россия]
news id: 55bd592c535c12a8d6000327; теги: [Русский]
news id: 55bb32ae535c12e543006e15; теги: [Русский, религия, пятница, Коран]
Итак, он не искал тег «Русский», если он не является первым тегом в массиве. Мы проверили Databse - у нас есть некоторые новости с тегами [ "Россия", "Русский"]
2. Когда мы ищем по тегам "Русский", "Томск":
QBRequestGetBuilder builder = new QBRequestGetBuilder();
builder.in("Tags", "Русский", "Томск");
3.When we search for tags "Томск", "Русский":
QBRequestGetBuilder builder = new QBRequestGetBuilder();
builder.in("Tags", "Томск", "Русский");
RESULTS FOR 2 AND 3 THE SAME NOW:
news id: 555c46736390d8a0ca03ab61; tags: [Томск, Алмере]
news id: 555c46b26390d8a7ce01439e; tags: [Томск, Алмере, Нидерланды, Россия]
news id: 555c50bf6390d8b66300dadf; tags: [Россия, Томская область, Томск]
news id: 555d7f5c6390d8eb8504df15; tags: [Россия, Томская область, Томск, Russia, Moscow, Москва]
news id: 556454536390d894de005c22; tags: [Томск, Россия]
news id: 55a905ba535c1207e600251d; tags: [Томск, Россия]
news id: 55b4a74f535c12b641004f3e; tags: [Русский, советы]
news id: 55b91b78535c129a1d0039f2; tags: [Русский, Россия]
news id: 55ba9482535c1238ce003522; tags: [Русский, Россия]
news id: 55ba96c4535c1298ec0003fc; tags: [Русский, советы]
news id: 55ba973f535c1298ec0004d7; tags: [Русский]
news id: 55ba9967535c12e2c00017f9; tags: [Русский, Россия]
news id: 55ba99e3535c1298ec00099f; tags: [Русский, Россия]
news id: 55bd592c535c12a8d6000327; tags: [Русский]
news id: 55bb32ae535c12e543006e15; tags: [Русский, религия, пятница, Коран]
news id: 55666ac66390d8ce7900044f; tags: [Томск, Россия]
Хорошо, можете ли вы опубликовать журналы REST из логарифма? потому что похоже, что REST API работает нормально, нужно проверить, что генерирует Android SDK –
Igor, у меня есть обновление моего сообщения –