2015-04-26 35 views
5

Używam Twittera dla Androida do tworzenia aplikacji. W podanym kodzie SDK jest CompactTweetView do wyświetlania Tweetów, ale nie ma tam pola do wyświetlania liczb w sieci. Aby wyświetlić tweety, używam TweetViewAdapter w sdk.Pokaż liczbę retweetów za pomocą Twitter Fabric Android Sdk TweetViewAdpater

Teraz chcę wyświetlać również liczbę twoich zapytań poniżej każdego tweeta. Jak mogę osiągnąć mój cel? Czy muszę dodawać osobne wiersze po każdym wpisie w ListView, aby wyświetlać liczby z retweetami lub czy istnieje jakikolwiek inny sposób, w jaki mogę rozszerzyć CompactTweetView, aby uwzględnić liczbę retweetów. Innym sposobem jest używanie pustego LinearLayout i dodawanie wiersza do widoku liczby retweetów po każdym CompactTweetView. Jaka będzie wydajność w obu przypadkach

  1. ListView (jeśli to możliwe, to jak to zrobić?)

  2. Empty LinearLayout z alternatywnym CompactTweetView i Retweet liczba wyświetleń.

Jeśli coś nie jest jasne, poproś o więcej informacji. Dzięki.

Aktualny stan mojej aplikacji Twitter za pomocą ListView z TweetViewAdapter. Chcę wyświetlić liczbę retweetów po każdym wierszu. enter image description here

+0

Mam odpowiedź. Można to zrobić poprzez rozszerzenie TweetViewAdapter i nadpisanie funkcji getView z wymaganymi elementami interfejsu użytkownika. Dzięki. – sahu

+0

i co z zdarzeniami kliknięcia tych przycisków? Czy istnieje api tekstylne dla retweet, ulubione i odpowiedzi, muszę go również wdrożyć? –

+0

Nie, jest już obecny w api tkaniny. Użyj statusu usługi dla różnych opcji, takich jak retweet, odpowiedź ulubionych itp. statusesService = twitterApiClient.getStatusesService(); – sahu

Odpowiedz

4

Wyszukaj na tkaninie iu, sdks, tw__tweet_compact.xml lub tw__tweet.xml layout. Skopiuj układy zasobów. Nie zmieniaj nazwy. Dodaj swój niestandardowy widok Texview, aby wyświetlić liczbę przesłań. To jest mój zwyczaj 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> 

Po zmodyfikowaniu adaptera tweet. W metodzie getView dodaj TextView i ustaw liczbę retweetów w TextView. Liczba ulubionych nie działa dobrze. Pokazuje tylko ulubione ulubione tweety. Ulubione tweety innych użytkowników nie są wyświetlane.

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; 
    } 
} 

Myślę, że ten sposób jest łatwiejszy. Pozdrawiam

+0

czy możesz podać mi pełny kod –