新浪微博(3)之跳转详细页---WebView

来源:互联网 发布:淘宝怎么搜索发票 编辑:程序博客网 时间:2024/06/06 03:29

这个已经是做抓取新浪微博数据的第三个接口了。

点击首页上面的某个微博,然后跳转到该微博的详细页。

简单来说就是点击ListView上面的某个item,跳转到改item对应的ID的详细页---WebView。


接口链接:http://open.weibo.com/wiki/2/statuses/go

拿到接口内容必须要有两个参数---uid和id,一个是user的id,一个是post的id: https://api.weibo.com/2/statuses/go?uid=114757575&id=40475757475745   (黄色的是对应的item的数据)

沿用以往的方法,利用intent.putExtra来传递两个Activity之间的所需参数 ---uid和post_id。

因为微博页面有分原文和转发,所以需要有两组数据。

convertView.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v) {// TODO Auto-generated method stubIntent intent = new Intent(weiboActivity.this, DetailPageActivity.class);intent.putExtra("uid", List.get(locate).getOri_uid());intent.putExtra("post_id", List.get(locate).getOri_post_id());startActivity(intent);}});

convertView.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v) {// TODO Auto-generated method stubIntent intent = new Intent(weiboActivity.this, DetailPageActivity.class);intent.putExtra("uid", List.get(position).getUid());intent.putExtra("post_id", List.get(position).getPost_id());startActivity(intent);}});

监听控件放在Adapter类中的getView()方法里,给convertView(view)绑定点击监听时间。

因为每次只会跳转一个详情页,所以传输的key一样也是可以的。

接下来就是DetailPageActivity.class的代码处理了。

这个类的代码比较简单,只需要一个包含WebView的布局就可以了。直接使用WebView的loadUrl(url)方法调用显示接口链接即可。

首先拿到从前面那个类中使用intent拿到的数据:

Bundle bundle = getIntent().getExtras();String uid = bundle.getString("uid");String post_id = bundle.getString("post_id");

然后直接用WebView显示:

WebView view = (WebView) findViewById(R.id.view);view.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);view.loadUrl(url);view.setWebViewClient(new WebViewClient(){@Overridepublic boolean shouldOverrideUrlLoading(WebView view, String url) {//返回值是true的时候控制去WebView打开,为false调用系统浏览器或第三方浏览器view.loadUrl(url);//启用支持javascriptWebSettings settings = view.getSettings();settings.setJavaScriptEnabled(true);return true;}});

P.S.一下代码是参考一些高手的博文的,这里备注一下。

@Overridepublic boolean shouldOverrideUrlLoading(WebView view, String url) {//返回值是true的时候控制去WebView打开,为false调用系统浏览器或第三方浏览器view.loadUrl(url);//启用支持javascriptWebSettings settings = view.getSettings();settings.setJavaScriptEnabled(true);return true;}
这段的用意是让接口链接直接在软件内打开,而非跳转到第三方浏览器或者自带浏览器上。


到此已经可以实现点击博文跳转到指定的详情页了。


整个DetailPageAcvitity的代码:

package com.example.intergrationpro;import org.apache.http.Header;import com.loopj.android.http.AsyncHttpClient;import com.loopj.android.http.RequestParams;import com.loopj.android.http.TextHttpResponseHandler;import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.view.Window;import android.webkit.WebSettings;import android.webkit.WebView;import android.webkit.WebViewClient;public class DetailPageActivity extends Activity{private String url,uid,post_id;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);this.requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题栏  setContentView(R.layout.detailsweibo_layout);Bundle bundle = getIntent().getExtras();String uid = bundle.getString("uid");String post_id = bundle.getString("post_id");url = "https://api.weibo.com/2/statuses/go?"+"uid="+uid+"&id="+post_id;WebView view = (WebView) findViewById(R.id.view);view.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);view.loadUrl(url);view.setWebViewClient(new WebViewClient(){@Overridepublic boolean shouldOverrideUrlLoading(WebView view, String url) {//返回值是true的时候控制去WebView打开,为false调用系统浏览器或第三方浏览器view.loadUrl(url);//启用支持javascriptWebSettings settings = view.getSettings();settings.setJavaScriptEnabled(true);return true;}});}}


效果图:



此博文用以记录,方便日后重温使用。


0 0
原创粉丝点击