问题
I am using Twitter's android sdk for developing an app. In the given sdk there is a CompactTweetView for displaying the Tweets, but there is no field for showing retweets counts in it. To display the tweets I am using TweetViewAdapter provided in sdk.
Now I want to show the retweet counts also below each tweets. How can I achieve my objective ? Do I have to add separate rows after each entry in ListView to show retweet counts or is there any other way by which I can extend the CompactTweetView to include retweet count. Another way is that I use an empty LinearLayout and add a row for retweet count view after each CompactTweetView. What will be the performance in both cases
ListView (If possible then how to do it ?)
Empty LinearLayout with alternate CompactTweetView and retweet count View.
If anything is not clear please ask for more information. Thanks.
Current state of of my twitter app using ListView with TweetViewAdapter. I want to display retweet count after each row.
回答1:
Search on fabric iu sdks the tw__tweet_compact.xml or tw__tweet.xml layout.Copy in resources layouts.Don't change the name. Add your custom Texview to show retweets count. This is my custom tw__tweet_compact.xml
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/tw__tweet_view"
style="@style/tw__CompactTweetContainer">
<TextView
android:id="@+id/tw__tweet_retweeted_by"
style="@style/tw__TweetRetweetedBy.Compact"
android:layout_alignLeft="@+id/tw__author_attribution"
tools:text="retweeted by" />
<ImageView
android:id="@+id/tw__tweet_author_avatar"
style="@style/tw__TweetAvatar.Compact"
android:layout_below="@id/tw__tweet_retweeted_by"
tools:background="@color/tw__tweet_media_preview_bg_color"
tools:ignore="ContentDescription" />
<!--Name and timestamp don't ellipsize, but @username in the middle does ellipsize-->
<LinearLayout
android:id="@+id/tw__author_attribution"
style="@style/tw__CompactAttributionLine"
android:layout_below="@id/tw__tweet_retweeted_by"
android:layout_toEndOf="@id/tw__tweet_author_avatar"
android:layout_toRightOf="@id/tw__tweet_author_avatar">
<TextView
android:id="@+id/tw__tweet_author_full_name"
style="@style/tw__TweetFullName.Compact"
tools:text="Jack" />
<TextView
android:id="@+id/tw__tweet_author_screen_name"
style="@style/tw__TweetScreenName.Compact"
tools:text="@jack" />
<TextView
android:id="@+id/tw__tweet_timestamp"
style="@style/tw__TweetTimestamp.Compact"
tools:text="• 03/21/2006" />
</LinearLayout>
<ImageView
android:id="@+id/tw__twitter_logo"
style="@style/tw__TwitterLogo.Compact"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_below="@id/tw__tweet_retweeted_by"
tools:ignore="ContentDescription" />
<com.twitter.sdk.android.tweetui.internal.util.AspectRatioImageView
android:id="@+id/tw__tweet_media"
style="@style/tw__TweetMedia.Compact"
android:layout_below="@id/tw__author_attribution"
android:layout_toEndOf="@id/tw__tweet_author_avatar"
android:layout_toRightOf="@id/tw__tweet_author_avatar"
tools:ignore="ContentDescription" />
<TextView
android:id="@+id/tw__tweet_text"
style="@style/tw__TweetText.Compact"
android:layout_below="@id/tw__tweet_media"
android:layout_toEndOf="@id/tw__tweet_author_avatar"
android:layout_toRightOf="@id/tw__tweet_author_avatar"
tools:text="just setting up my twttr" />
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/rtwfavLayout"
android:layout_width="match_parent"
android:layout_height="36dp"
android:layout_below="@+id/tw__tweet_text"
android:layout_toEndOf="@+id/tw__tweet_author_avatar"
android:layout_toRightOf="@+id/tw__tweet_author_avatar"
android:orientation="horizontal">
<ImageView
android:layout_width="15dp"
android:layout_height="15dp"
android:layout_marginBottom="2dp"
android:layout_marginRight="2dp"
android:layout_marginTop="11dp"
android:scaleType="fitCenter"
android:src="@drawable/tw__ic_retweet_light" />
<TextView
android:id="@+id/rtwtxt"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:layout_marginBottom="2dp"
android:layout_marginTop="11dp"
android:singleLine="true"
/>
<ImageView
android:layout_width="15dp"
android:layout_height="15dp"
android:layout_marginBottom="2dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="2dp"
android:layout_marginTop="11dp"
android:scaleType="fitCenter"
android:src="@drawable/favourite" />
<TextView
android:id="@+id/favtxt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="2dp"
android:layout_marginTop="11dp"
android:drawablePadding="5dp"
android:singleLine="true" />
</LinearLayout>
</RelativeLayout>
After modifying your tweet adapter. In the method getView add TextView and set the number of retweets in the TextView. The number of favorites does not work well. Only shows own favorite tweets. Favorite tweets of other users don't displays.
public class TweetAdapter extends TweetTimelineListAdapter {
public TweetAdapter(Context context, Timeline<Tweet> timeline) {
super(context, timeline);
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
final View view = super.getView(position, convertView, parent);
CompactTweetView compactTweetView = (CompactTweetView) view;
TextView txtfav = (TextView) compactTweetView.findViewById(R.id.favtxt);
TextView txtrtw = (TextView) compactTweetView.findViewById(R.id.rtwtxt);
if (compactTweetView.getTweet().retweetedStatus != null) {
txtfav.setText(String.valueOf(compactTweetView.getTweet().retweetedStatus.favoriteCount));
if (txtfav.getText().equals("null")) {
txtfav.setText(String.valueOf(compactTweetView.getTweet().favoriteCount));
}
txtrtw.setText(String.valueOf(compactTweetView.getTweet().retweetedStatus.retweetedStatus));
if (txtrtw.getText().equals("null")) {
txtrtw.setText(String.valueOf(compactTweetView.getTweet().retweetCount));
}
} else {
txtfav.setText(String.valueOf(compactTweetView.getTweet().favoriteCount));
txtrtw.setText(String.valueOf(compactTweetView.getTweet().retweetCount));
}
return compactTweetView;
}
}
I think this way is easier. Regards
来源:https://stackoverflow.com/questions/29877453/show-retweet-counts-using-twitter-fabric-android-sdks-tweetviewadpater