2015-03-08 3 views
0

Я сейчас пытаюсь создать приложение Twitter &, чтобы перечислить 20 последних твитов Home Timeline в listview.Работа с дублирующими элементами для Twitter-канала?

При обновлении через минуту он добавляет новые 5 твитов + старые обработанные предыдущие 15 твитов. (Здесь возникает дублирование).

Итак, как я могу предотвратить добавление повторяющихся твитов снова и снова при освежении?

ответ

1

Убедитесь, что каждый новый твит уже находится в адаптере после его загрузки. Самый простой способ сделать это - использовать HashMap. Когда вы получите чириканье, проверьте карту. Если твит находится там, пропустите его. Если это не так, добавьте его к карте и списку.

+0

так, должен ли я использовать tweet_id в качестве первичного здесь, чтобы проверить, присутствовал ли твит или нет? – user3289108

+0

Да. Используйте это как ключ к карте. Значение не имеет значения - на самом деле вы можете использовать HashSet вместо HashMap, потому что нет никакого реального значения для улучшения производительности. –

+0

Спасибо. +1 за помощь. – user3289108

0

Самый простой способ сделать это - использовать параметр since_idHome Timeline.

Например, если последний твит был идентификатор «123456789», вы могли бы назвать https://api.twitter.com/1.1/statuses/home_timeline.json?since_id=123456789 - таким образом Twitter будет только дать вам твиты, которые произошли после того, как вашего последнего обновления.

+0

Я пробовал это, но он не работает в 'Twitter4j'. – user3289108

+0

Он делает. Вам нужно использовать пейджинг. См. Http://twitter4j.org/javadoc/twitter4j/Paging.html –

+0

Здесь упоминается. Но, когда я пытаюсь использовать только 'max_id',' with_id' вместе с 'max_id' работает. Но не только с 'since_id'. – user3289108