Получить временную шкалу пользователя Twitter и применить фильтры

Я использую твиттер-комплект для Android в своем приложении, следуя официальной документации (https://github.com/twitter/twitter-kit-android/wiki). Я вхожу в систему и получаю основные данные правильно и без проблем.

Когда я хочу получить твиты пользователя или временную шкалу, способ сделать это указывается, но всегда отображается в виде списка или recyclerview (https://github.com/twitter/twitter-kit-android/wiki/Show-Timelines).

Я видел эти примеры также в stackoverflow, где дается то же решение, но всегда преобразует данные в список или recyclerview.

Мой вопрос: есть ли способ получить только ответ JSON на запрос?

Ответы, которые я нашел, конкретно на это не отвечают.

Следующим способом можно получить список твитов, но я не могу применять фильтры поиска, такие как дата или ключевые слова (до даты и т. д.)

void writeInFile()
        {
            userTimeline = new UserTimeline.Builder()
                    .userId(userID)
                    .includeRetweets(false)
                    .maxItemsPerRequest(200)
                    .build();

            userTimeline.next(null, callback);
        }

        Callback<TimelineResult<Tweet>> callback = new Callback<TimelineResult<Tweet>>()
        {
            @Override
            public void success(Result<TimelineResult<Tweet>> searchResult)
            {
                List<Tweet> tweets = searchResult.data.items;

                for (Tweet tweet : tweets)
                {
                    String str = tweet.text; //Here is the body
                    maxId = tweet.id;
                    Log.v(TAG,str);
                }
                if (searchResult.data.items.size() == 100) {
                    userTimeline.previous(maxId, callback);
                }
                else {


                }

            }
            @Override
            public void failure(TwitterException error)
            {
                Log.e(TAG,"Error");
            }
        };

Заранее спасибо.

0
0
334
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы получаете все необходимые данные в

public void success(Result<TimelineResult<Tweet>> searchResult)

Перезвоните.

У вас есть список твитов от

searchResult.data.items;

а затем вы можете выбрать только те данные, которые вам нужны. В классе Твитнуть содержится много данных, которые вы можете использовать. Вот документы.

Если вы сравните его с Ответ API JSON, вы увидите, что у вас такая же информация.

Все, что вам нужно сделать, это получить данные из вашего объекта Tweet и отфильтровать их. Например, получим только твиты, созданные за последние 6 часов:

List<Tweet> tweets = searchResult.data.items;
List<Tweet> filteredTweets = new ArrayList<>();

Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
cal.add(Calendar.HOUR_OF_DAY, -6);

Date sixHoursBefore = cal.getTime(); 

for (Tweet tweet : tweets)
{
    Date tweetCreatedAtDate = null;
    try {
        tweetCreatedAtDate = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy").parse(tweet.createdAt);
        if (tweetCreatedAtDate.after(sixHoursBefore)) {
            filteredTweets.add(tweet);
        }
    } catch (ParseException e) {
        e.printStackTrace();
    }
}

Там twitter возвращает createdAt в формате Wed Aug 27 13:08:45 +0000 2008, что не очень удобно, но мы можем его разобрать.

Я бы порекомендовал вам немного реорганизовать его, вынести календарь и логику синтаксического анализа в отдельные функции, но вы можете понять идею из приведенного выше кода.

Другие вопросы по теме