0

我正在尝试制作一个带有 twitter 时间线的应用程序一个 android studio。为此,我使用了 twitter fabric API。我正在关注的文档位于https://docs.fabric.io/android/twitter/show-timelines.html#timeline-builders。我遇到的问题是setListAdapter (adapter);中 的 setListAdapter 出现错误说“无法解析方法'setListAdapter(com.twitter.sdk.tweetui.TweetTimelineListAdapter)'”。我真的没有使用android studio的经验,所以我复制并粘贴了大部分代码。我查看了适配器在 android studio 中是如何工作的,我知道它们的作用,但我不确定它们是如何设置的。在此先感谢您的帮助!

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>

4

1 回答 1

1

你需要更多地学习使用ListViewsListActivities在android中。

错误原因

您的麻烦方法setListAdapter(adapter)在 a 中可用,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
    }
}

还要id在布局文件中更改您的 ListView ,如下所示。

<ListView android:id="@+id/listView"...
于 2016-03-15T05:44:37.463 回答