我正在尝试使用Twitter时间线和Android工作室制作应用程序。为此,我使用的是twitter fabric API。我关注的文档可在https://docs.fabric.io/android/twitter/show-timelines.html#timeline-builders找到。我遇到的问题是 setListAdapter setListAdapter(adapter); 会出现错误,提示"无法解析方法' setListAdapter(com.twitter.sdk.tweetui.TweetTimelineListAdapter)'" 。我真的没有使用android studio的经验,所以我已经复制并粘贴了大部分代码。我已经查看了适配器在Android工作室中的工作方式,我得到了他们的工作,但我不确定他们是如何设置的。在此先感谢您的帮助!
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.support.v4.widget.SwipeRefreshLayout;
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.SearchTimeline;
import com.twitter.sdk.android.tweetui.TimelineResult;
import com.twitter.sdk.android.tweetui.TweetTimelineListAdapter;
import com.twitter.sdk.android.tweetui.UserTimeline;
import com.twitter.sdk.android.tweetui.CollectionTimeline;
public class FeedActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_feed);
final SwipeRefreshLayout swipeLayout = (SwipeRefreshLayout) findViewById(R.id.swipe_layout);
final SearchTimeline timeline = new SearchTimeline.Builder()
.query("#fblaoutfit")
.build();
final TweetTimelineListAdapter adapter = new TweetTimelineListAdapter.Builder(this)
.setTimeline(timeline)
.build();
setListAdapter(adapter);
swipeLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
swipeLayout.setRefreshing(true);
adapter.refresh(new Callback<TimelineResult<Tweet>>() {
@Override
public void success(Result<TimelineResult<Tweet>> result) {
swipeLayout.setRefreshing(false);
}
@Override
public void failure(TwitterException exception) {
// Toast or some other action
}
});
}
});
}
这里是XML,如果它对你有帮助的话:
<android.support.v4.widget.SwipeRefreshLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/swipe_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView android:id="@id/android:empty"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal|center_vertical"
android:text="No Tweets"/>
<ListView android:id="@id/android:list"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:divider="#e1e8ed"
android:dividerHeight="1dp"
android:drawSelectorOnTop="false"/>
</android.support.v4.widget.SwipeRefreshLayout>
答案 0 :(得分:1)
您需要在android中使用ListViews
和ListActivities
进行更多研究。
您的烦恼方法setListAdapter(adapter)
位于ListActivity
,但您的活动类别为AppCompatActivity
。 setListAdapter(adapter)
中没有定义AppCompatActivity
方法。这就是你得到上述错误的原因。
通过考虑其余的实施,您可以使用AppCompactActivity
。但是,您无法使用setListAdapter(adapter)
方法。相反,您需要在布局中引用ListView
,并为ListView
设置适配器,如下面的代码段所示。
public class FeedActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_feed);
final TweetTimelineListAdapter adapter = new TweetTimelineListAdapter.Builder(this)
.setTimeline(timeline)
.build();
//obtain reference to the list view
ListView listView = (ListView) findViewById(R.id.listView);
//set the adapter to list view
listView.setAdapter(adapter);
//your rest of the code
}
}
同样在布局文件中更改ListView的id
,如下所示。
<ListView android:id="@+id/listView"...