我想使用Twitter4J 获取带有标签“谚语”的最新和最受欢迎的推文,但是当我尝试这样做时,我得到的结果并不是最新的和最受欢迎的(我知道,因为我将它们与我在twitter上搜索相同标签时得到的结果进行了比较,但它们并不相同。这是我的代码:
public class Wisdom extends SherlockActivity {
Context mContext;
Twitter mTwitter;
ListView mListView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_hastag_wisdom);
mListView = (ListView) findViewById(R.id.listView1);
mContext = getApplicationContext();
mTwitter = getTwitter();
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
.permitAll().build();
StrictMode.setThreadPolicy(policy);
showTweetsAbout("#proverbs");
}
private Twitter getTwitter() {
ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setOAuthConsumerKey(xxxxxxx);
cb.setOAuthConsumerSecret(xxxxxxx);
cb.setOAuthAccessToken(xxxxxxx);
cb.setOAuthAccessTokenSecret(xxxxxxx);
TwitterFactory tf = new TwitterFactory(cb.build());
Twitter twitter = tf.getInstance();
return twitter;
}
private void showTweetsAbout(String queryString) {
ArrayList<String> tweetsArray = new ArrayList<String>();
Twitter twitter = mTwitter;
Query query = new Query(queryString);
query.setResultType(Query.MIXED);
query.setCount(30);
QueryResult result;
try {
result = twitter.search(query);
for (Status tweet : result.getTweets()) {
Log.d("Wisdom", tweet.getUser() + ":" + tweet.getText());
tweetsArray.add(tweet.getText());
for (URLEntity urle : tweet.getURLEntities()) {
System.out.println(urle.getDisplayURL());
}
}
} catch (TwitterException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ArrayAdapter<String> tweetsAdapter = new ArrayAdapter<String>(this,
R.layout.row, tweetsArray);
mListView.setAdapter(tweetsAdapter);
}
}
代码也会非常感激,作为解释,谢谢。
答案 0 :(得分:-1)
尽管您正在主线程上进行网络操作(!!)尝试在查询结果中指定直到
query.setUntill(date);
作为日期设定的当前时间,它返回在给定日期之前生成的推文。
另一个问题是twitter4j的结果与网站上的推文有多大差异?在此期间,可能会在移动应用程序中执行查询和查询网站之间出现一些带有给定标签的新推文。