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

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

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

简单来说就是点击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(){

				@Override
				public void onClick(View v) {
					// TODO Auto-generated method stub
					Intent 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(){

				@Override
				public void onClick(View v) {
					// TODO Auto-generated method stub
					Intent 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(){
			@Override
			public boolean shouldOverrideUrlLoading(WebView view, String url) {

				//返回值是true的时候控制去WebView打开,为false调用系统浏览器或第三方浏览器
				view.loadUrl(url);

				//启用支持javascript
				WebSettings settings = view.getSettings();
				settings.setJavaScriptEnabled(true);
				return true;
			}
		});

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

@Override
			public boolean shouldOverrideUrlLoading(WebView view, String url) {

				//返回值是true的时候控制去WebView打开,为false调用系统浏览器或第三方浏览器
				view.loadUrl(url);

				//启用支持javascript
				WebSettings 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;

	@Override
	protected 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(){
			@Override
			public boolean shouldOverrideUrlLoading(WebView view, String url) {

				//返回值是true的时候控制去WebView打开,为false调用系统浏览器或第三方浏览器
				view.loadUrl(url);

				//启用支持javascript
				WebSettings settings = view.getSettings();
				settings.setJavaScriptEnabled(true);
				return true;
			}
		});
	}
}


效果图:



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


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值