Как правило, в Android каждый класс адаптер предоставляет Вам следующие методы:
public int getCount();
public T getItem(int position);
Так вы пользователи могут получить все данные из класса адаптера следующим образом:
ArrayList<T> data= new ArrayList<T>();
for(int i= 0; i < adapter.getCount(); i++) {
data.add(adapter.getItem(i));
}
Так что в вашем случае :
Это должен быть код для TweetTimelineListAdapter, взятый из этого github url
package com.twitter.sdk.android.tweetui;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import com.twitter.sdk.android.core.Callback;
import com.twitter.sdk.android.core.Result;
import com.twitter.sdk.android.core.TwitterException;
import com.twitter.sdk.android.core.models.Tweet;
import com.twitter.sdk.android.tweetui.internal.TimelineDelegate;
/**
* TweetTimelineListAdapter is a ListAdapter which can provide Timeline Tweets to ListViews.
*/
public class TweetTimelineListAdapter extends TimelineListAdapter<Tweet> {
protected Callback<Tweet> actionCallback;
final protected int styleResId;
/**
* Constructs a TweetTimelineListAdapter for the given Tweet Timeline.
* @param context the context for row views.
* @param timeline a Timeline<Tweet> providing access to Tweet data items.
* @throws java.lang.IllegalArgumentException if timeline is null
*/
public TweetTimelineListAdapter(Context context, Timeline<Tweet> timeline) {
this(context, timeline, R.style.tw__TweetLightStyle, null);
}
TweetTimelineListAdapter(Context context, Timeline<Tweet> timeline, int styleResId,
Callback<Tweet> cb) {
this(context, new TimelineDelegate<>(timeline), styleResId, cb);
}
TweetTimelineListAdapter(Context context, TimelineDelegate<Tweet> delegate, int styleResId,
Callback<Tweet> cb) {
super(context, delegate);
this.styleResId = styleResId;
this.actionCallback = new ReplaceTweetCallback(delegate, cb);
}
/**
* Returns a CompactTweetView by default. May be overridden to provide another view for the
* Tweet item. If Tweet actions are enabled, be sure to call setOnActionCallback(actionCallback)
* on each new subclass of BaseTweetView to ensure proper success and failure handling
* for Tweet actions (favorite, unfavorite).
*/
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View rowView = convertView;
final Tweet tweet = getItem(position);
if (rowView == null) {
final BaseTweetView tv = new CompactTweetView(context, tweet, styleResId);
tv.setOnActionCallback(actionCallback);
rowView = tv;
} else {
((BaseTweetView) rowView).setTweet(tweet);
}
return rowView;
}
/*
* On success, sets the updated Tweet in the TimelineDelegate to replace any old copies
* of the same Tweet by id.
*/
static class ReplaceTweetCallback extends Callback<Tweet> {
TimelineDelegate<Tweet> delegate;
Callback<Tweet> cb;
ReplaceTweetCallback(TimelineDelegate<Tweet> delegate, Callback<Tweet> cb) {
this.delegate = delegate;
this.cb = cb;
}
@Override
public void success(Result<Tweet> result) {
delegate.setItemById(result.data);
if (cb != null) {
cb.success(result);
}
}
@Override
public void failure(TwitterException exception) {
if (cb != null) {
cb.failure(exception);
}
}
}
/**
* TweetTimelineListAdapter Builder
*/
public static class Builder {
private Context context;
private Timeline<Tweet> timeline;
private Callback<Tweet> actionCallback;
private int styleResId = R.style.tw__TweetLightStyle;
/**
* Constructs a Builder.
* @param context Context for Tweet views.
*/
public Builder(Context context) {
this.context = context;
}
/**
* Sets the Tweet timeline data source.
* @param timeline Timeline of Tweets
*/
public Builder setTimeline(Timeline<Tweet> timeline) {
this.timeline = timeline;
return this;
}
/**
* Sets the Tweet view style by resource id.
* @param styleResId resource id of the Tweet view style
*/
public Builder setViewStyle(int styleResId) {
this.styleResId = styleResId;
return this;
}
/**
* Sets the callback to call when a Tweet action is performed on a Tweet view.
* @param actionCallback called when a Tweet action is performed.
*/
public Builder setOnActionCallback(Callback<Tweet> actionCallback) {
this.actionCallback = actionCallback;
return this;
}
/**
* Builds a TweetTimelineListAdapter from Builder parameters.
* @return a TweetTimelineListAdpater
*/
public TweetTimelineListAdapter build() {
return new TweetTimelineListAdapter(context, timeline, styleResId, actionCallback);
}
}
}
Вы используете его, как показано ниже:
final TweetTimelineListAdapter adapter = new TweetTimelineListAdapter.Builder(this)
.setTimeline(userTimeline)
.build();
setListAdapter(adapter);
Здесь TweetTimelineListAdapter
расширяет TimelineListAdapter
и TimelineListAdapter
расширяет BaseAdapter
И BaseAdapter
класс имеют следующие methods:
public int getCount();
public T getItem(int position);
так что вы можете получить все данные из TweetTimelineListAdapter следующим образом:
ArrayList<Tweet> tweets = new ArrayList<Tweet>();
for(int i= 0; i<adapter.getCount();i++) {
tweets.add(adapter.getItem(i));
}
Здесь вы будете иметь все твиты от TweetTimelineListAdapter
в ваш ArrayList.
'getItem (int position)'? – pskink
Можете ли вы дать правильный код, когда я отправляюсь на adaper, он показывает ошибки. Я имею в виду то, что я должен использовать вместо позиции int. – Atula
какие ошибки? просто вызовите метод 'adapter.getItem()' – pskink