首页 > 解决方案 > how to get twitter trending topics on button click android - twitter4j?

问题描述

I've been studying android for a small period of time, and i'm trying to put some twitter functions in to my apps.

What i'm trying to do is get the twitter trending topics and put it on a String, and then display them on a textview. Is it possible? I found almost nothing on the internet, so hope you can help me.

`

 @Override
        protected void onCreate(Bundle savedInstanceState)
       {
         super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_trending);


    getTrendingButton = (Button) findViewById(R.id.gettrendingbutton);
    trendingList = (TextView) findViewById(R.id.trendinglist);



    cb = new ConfigurationBuilder();
    cb.setApplicationOnlyAuthEnabled(false);
    cb.setOAuthConsumerKey("key")
            .setOAuthConsumerSecret("key")
            .setOAuthAccessToken("key")
            .setOAuthAccessTokenSecret("key");

    twitterFactory = new TwitterFactory(cb.build());
    twitter = twitterFactory.getInstance();


}

@Override
protected void onStart()
{
    super.onStart();

    getTrendingButton.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View view)
        {
            String trendsString = " ";
            Trends trends;
            try {
                trends = twitter.getPlaceTrends(1);
                int count = 0;
                for (Trend trend : trends.getTrends()) {
                    if (count < 10)
                    {
                        trendsString = trend.getName().toString() + "\n";
                    }
                    trendingList.setText(trendsString);
                }
            } catch (TwitterException e) {
                e.printStackTrace();
            }

        }
    });


}`

and here the analyze stacktrace

android.os.NetworkOnMainThreadException at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1448) at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:102) at java.net.Inet6AddressImpl.lookupAllHostAddr(Inet6AddressImpl.java:90) at java.net.InetAddress.getAllByName(InetAddress.java:787) at com.android.okhttp.Dns$1.lookup(Dns.java:39) at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:200) at com.android.okhttp.internal.http.RouteSelector.nextProxy(RouteSelector.java:148) at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:90) at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:190) at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:142) at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:104) at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:392) at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:325) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:489) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:435) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:566) at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getResponseCode(DelegatingHttpsURLConnection.java:105) at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getResponseCode(Unknown Source:0) at twitter4j.HttpResponseImpl.(HttpResponseImpl.java:35) at twitter4j.HttpClientImpl.handleRequest(HttpClientImpl.java:149) at twitter4j.HttpClientBase.request(HttpClientBase.java:57) at twitter4j.HttpClientBase.get(HttpClientBase.java:75) at twitter4j.TwitterImpl.get(TwitterImpl.java:2066) at twitter4j.TwitterImpl.getPlaceTrends(TwitterImpl.java:1912) at gusmappdev.myapp.TrendingActivity$1.onClick(TrendingActivity.java:77) at android.view.View.performClick(View.java:6897) at android.widget.TextView.performClick(TextView.java:12693) at android.view.View$PerformClick.run(View.java:26100) at android.os.Handler.handleCallback(Handler.java:789) at android.os.Handler.dispatchMessage(Handler.java:98) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6942) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)

Hope you guys can help me :) Thanks

标签: javaandroidtwittertwitter4j

解决方案


有一种方法可以将getPlaceTrends()方法与AsyncTwitter实例一起使用。但是在这种情况下,方法是void,我不确定如何存储结果。


推荐阅读