这个已经是做抓取新浪微博数据的第三个接口了。
点击首页上面的某个微博,然后跳转到该微博的详细页。
简单来说就是点击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;
}
});
}
}
效果图:
此博文用以记录,方便日后重温使用。