我一直在玩twitter4j和Android,迄今爲止都很棒。不過,我在解決如何在列表視圖中正確顯示推文時遇到了問題。這是到目前爲止我的代碼的基礎上,code example given on the Twitter4j website:在twitter4j的列表視圖中顯示推文
public class MainActivity extends Activity {
//ListView with the tweets
private ListView timelineListView;
// Alert Dialog Manager
AlertDialogManager alert = new AlertDialogManager();
//Adapter
ArrayAdapter<twitter4j.Status> tweetAdapter ;
//List
List<Status> rawStatuses;
//Other stuff
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list_main);
//Login methods, checking that there is an Internet connection, etc... When a button is
//pressed, an Asynctask is called and it retrieves the tweets:
class updateTimeline extends AsyncTask <Void, Void, Void>{
protected void onPreExecute(Void thing){
}
protected Void doInBackground(Void... arg0) {
try {
ConfigurationBuilder builder = new ConfigurationBuilder();
builder.setOAuthConsumerKey(TWITTER_CONSUMER_KEY);
builder.setOAuthConsumerSecret(TWITTER_CONSUMER_SECRET);
// Access Token
String access_token = mSharedPreferences.getString(PREF_KEY_OAUTH_TOKEN, "");
// Access Token Secret
String access_token_secret = mSharedPreferences.getString(PREF_KEY_OAUTH_SECRET, "");
AccessToken accessToken = new AccessToken(access_token, access_token_secret);
Twitter twitter = new TwitterFactory(builder.build()).getInstance(accessToken);
User user = twitter.verifyCredentials();
rawStatuses = twitter.getHomeTimeline();
System.out.println("Showing @" + user.getScreenName() + "'s home timeline.");
for (twitter4j.Status status : rawStatuses) {
System.out.println("@" + status.getUser().getScreenName() + " - " + status.getText());
}
} catch (TwitterException te) {
te.printStackTrace();
System.out.println("Failed to get timeline: " + te.getMessage());
//System.exit(-1);
}
return null;
}
protected void onPostExecute(Void result) {
// dismiss the dialog after getting all products
//pDialog.dismiss();
// updating UI from Background Thread
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(),
"Timeline updated", Toast.LENGTH_SHORT)
.show();
tweetAdapter = new ArrayAdapter<twitter4j.Status>(MainActivity.this, android.R.layout.simple_list_item_1, rawStatuses);
timelineListView.setAdapter(tweetAdapter);
}
});
}
它檢索過去的20個鳴叫左右就好了。但我的問題來fromt他最後一部分,我在那裏綁定列表rawStatuses適配器和列表視圖,因爲它基本上是打印屏幕上的所有信息:
好了,不是所有的信息是有用的或曾經需要,但它在那裏。我不知道如何僅在listView中顯示Twitter句柄和tweet,例如(即從列表rawStatuses中正確提取信息)。我想有一個列出最有用的信息(類似於: List <User, Tweet, ID, Time>
),但在我看來,這很麻煩,也是一個非常糟糕的解決方案。
我的問題是:如何能夠或應該管理鳴叫包含的所有信息(許多推文),以便我可以顯示我想要的內容,並且還有剩下的內容?我找到的最接近的答案是this answer,但給出的鏈接不再有效。
我希望我已經解釋了我自己。提前致謝。
我還要指出的是,我用我自己的佈局而不是默認的映射我的ListView,而不是使用默認的layout_list_item_1。 – Martin