Twitter UserTimeline和TweetTimelineListAdapter在Android上无法滚动

时间:2017-11-21 00:08:13

标签: android twitter

我使用TwitterKit和UserTimeline以及TweetTimelineListAdapter列出来自特定用户的推文(在本例中为realdonaldtrump):

final ViewGroup vg = (ViewGroup)LinearLayout.inflate(context, R.layout.node_social_twitter, null);

final UserTimeline userTimeline = new UserTimeline.Builder().screenName("realdonaldtrump").build();
final TweetTimelineListAdapter adapter = new TweetTimelineListAdapter.Builder(context).setTimeline(userTimeline).build();
final ListView tweetsListview = (ListView)vg.getChildAt(0);
tweetsListview.setAdapter(adapter);

这是我的布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:background="#f9f"
    android:orientation="vertical"
    android:layout_margin="@dimen/node_default_spacing_half"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ListView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
</LinearLayout>

我只能看到一条推文。

如果我将列表视图设置为固定高度(例如,400dp),我可以看到更多推文,但很多时候推文只有一半可见,而且我再次无法滚动。

有关如何解决此问题的任何提示?一个理想的场景是指出我想要展示的推文数量,并使其可滚动。

谢谢!

2 个答案:

答案 0 :(得分:0)

尝试使用:

<ListView
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

答案 1 :(得分:0)

手动添加项目(没有适配器)似乎有效,至少能够获得N条推文并完全适合它们。在这个解决方案中,tweetsViewGroup是一个线性布局。

final UserTimeline userTimeline = new UserTimeline.Builder().screenName(twitterHandle).build();
userTimeline.previous(null, new Callback<TimelineResult<Tweet>>() {
    @Override
    public void success(final Result<TimelineResult<Tweet>> result) {
        // For now we'll just display 3 items
        // TODO Ensure we have 3 or more tweets
        for (int x = 0; x < 3; x++) {
            final Tweet tweet = result.data.items.get(x);
            tweetsViewGroup.addView(new TweetView(context, tweet));
        }
    }

    @Override
    public void failure(final TwitterException ignored) {
        vg.setVisibility(View.GONE);
    }
});