用百度獲取網路資料
阿新 • • 發佈:2018-11-04
首先是四個佈局頁面
第一個是主體佈局
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.dell.zklx03.MainActivity"> <android.support.design.widget.TabLayout android:layout_width="match_parent" android:layout_height="60dp" android:id="@+id/tab"/> <android.support.v4.view.ViewPager android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/vp"/> </LinearLayout>
然後是item的佈局
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:layout_width="match_parent" android:layout_height="300dp" android:id="@+id/image"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/tv"/> </LinearLayout>
然後是兩個Fragment的佈局
fragment_blank
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.dell.zklx03.BlankFragment"> <!-- TODO: Update blank fragment layout --> <WebView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/wb"/> </FrameLayout>
fragment_alank
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.dell.zklx03.AlankFragment">
<!-- TODO: Update blank fragment layout -->
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/rv"></android.support.v7.widget.RecyclerView>
</FrameLayout>
接下來就是程式碼部分了
主體程式碼
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private TabLayout tab;
private List<Fragment>data;
private ViewPager vp;
private List<String>titles;
private MyAdatper myAdatper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
titles=new ArrayList<>();
titles.add("第一頁");
titles.add("第二頁");
data=new ArrayList<>();
data.add(new AlankFragment());
data.add(new BlankFragment());
myAdatper=new MyAdatper(getSupportFragmentManager());
vp.setAdapter(myAdatper);
tab.setupWithViewPager(vp);
}
private void initView() {
tab = (TabLayout) findViewById(R.id.tab);
vp = (ViewPager) findViewById(R.id.vp);
}
class MyAdatper extends FragmentPagerAdapter{
public MyAdatper(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return data.get(position);
}
@Override
public int getCount() {
return data.size();
}
@Override
public CharSequence getPageTitle(int position) {
return super.getPageTitle(position);
}
}
}
MyApp的程式碼
import android.app.Application;
import org.xutils.x;
/**
* Created by DELL on 2017/12/15.
*/
public class MyApp extends Application {
@Override
public void onCreate() {
x.Ext.init(this);
x.Ext.setDebug(true);
}
}
MyGson的程式碼
import java.util.List;
/**
* Created by DELL on 2017/12/15.
*/
public class MyGson {
/**
* status : 0
* msg : OK
* data : [{"postid":"53150","title":"周杰倫的2000W個故事之「 最長的電影 」","wx_small_app_title":"周杰倫的2000W個故事之「 最長的電影 」","pid":"1","app_fu_title":"","is_xpc":"1","is_promote":"0","is_xpc_zp":"1","is_xpc_cp":"0","is_xpc_fx":"0","is_album":"0","tags":"","recent_hot":"0","discussion":"0","image":"http://cs.vmovier.com/Uploads/cover/2017-12-15/5a33449b93b79_cut.jpeg","rating":"7.7","duration":"401","publish_time":"1513320097","like_num":"122","share_num":"147","post_type":"1","cates":[{"cateid":"13","catename":"廣告"}],"request_url":"http://app.vmoiver.com/53150?qingapp=app_new","ispromote":"0","isalbum":"0","cate":[{"cateid":"13","catename":"廣告"}]},{"postid":"53148","title":"NEW ERA青年電影季,開啟你的影像新紀元!","wx_small_app_title":"NEW ERA青年電影季,開啟你的影像新紀元!","pid":"1","app_fu_title":"","is_xpc":"1","is_promote":"0","is_xpc_zp":"1","is_xpc_cp":"0","is_xpc_fx":"0","is_album":"0","tags":"","recent_hot":"0","discussion":"0","image":"http://cs.vmovier.com/Uploads/cover/2017-12-14/5a32833999bbe_cut.jpeg","rating":"7.7","duration":"98","publish_time":"1513270140","like_num":"199","share_num":"138","post_type":"1","cates":[{"cateid":"7","catename":"勵志"}],"request_url":"http://app.vmoiver.com/53148?qingapp=app_new","ispromote":"0","isalbum":"0","cate":[{"cateid":"7","catename":"勵志"}]},{"postid":"53149","title":"NEW ERA青年電影季「華語電影2017新浪潮」","wx_small_app_title":"NEW ERA青年電影季「華語電影2017新浪潮」","pid":"1","app_fu_title":"","is_xpc":"1","is_promote":"0","is_xpc_zp":"1","is_xpc_cp":"0","is_xpc_fx":"0","is_album":"0","tags":"","recent_hot":"0","discussion":"0","image":"http://cs.vmovier.com/Uploads/cover/2017-12-15/5a32a9095ef05_cut.jpeg","rating":"7.8","duration":"230","publish_time":"1513269540","like_num":"365","share_num":"300","post_type":"1","cates":[{"cateid":"44","catename":"混剪"}],"request_url":"http://app.vmoiver.com/53149?qingapp=app_new","ispromote":"0","isalbum":"0","cate":[{"cateid":"44","catename":"混剪"}]},{"postid":"53145","title":"谷歌年度大事記:Year In Search 2017","wx_small_app_title":"谷歌年度大事記:Year In Search 2017","pid":"1","app_fu_title":"","is_xpc":"0","is_promote":"0","is_xpc_zp":"0","is_xpc_cp":"0","is_xpc_fx":"0","is_album":"0","tags":"","recent_hot":"0","discussion":"0","image":"http://cs.vmovier.com/Uploads/cover/2017-12-14/5a3279949fede_cut.jpeg","rating":"7.5","duration":"120","publish_time":"1513267800","like_num":"232","share_num":"218","post_type":"1","cates":[{"cateid":"78","catename":"生活"}],"request_url":"http://app.vmoiver.com/53145?qingapp=app_new","ispromote":"0","isalbum":"0","cate":[{"cateid":"78","catename":"生活"}]},{"postid":"53147","title":"全美熱門歌曲年度混剪 Pop 2017:How We Do It","wx_small_app_title":"全美熱門歌曲年度混剪 Pop 2017:How We Do It","pid":"1","app_fu_title":"","is_xpc":"0","is_promote":"0","is_xpc_zp":"0","is_xpc_cp":"0","is_xpc_fx":"0","is_album":"0","tags":"","recent_hot":"0","discussion":"0","image":"http://cs.vmovier.com/Uploads/cover/2017-12-14/5a326eddc9670_cut.jpeg","rating":"7.7","duration":"245","publish_time":"1513267740","like_num":"295","share_num":"184","post_type":"1","cates":[{"cateid":"18","catename":"音樂"}],"request_url":"http://app.vmoiver.com/53147?qingapp=app_new","ispromote":"0","isalbum":"0","cate":[{"cateid":"18","catename":"音樂"}]},{"postid":"53137","title":"不用太多,一句話就足夠","wx_small_app_title":"不用太多,一句話就足夠","pid":"1","app_fu_title":"","is_xpc":"0","is_promote":"0","is_xpc_zp":"0","is_xpc_cp":"0","is_xpc_fx":"0","is_album":"0","tags":"","recent_hot":"0","discussion":"0","image":"http://cs.vmovier.com/Uploads/cover/2017-12-13/5a30a6d501ec8_cut.jpeg","rating":"7.5","duration":"187","publish_time":"1513267680","like_num":"238","share_num":"170","post_type":"1","cates":[{"cateid":"78","catename":"生活"}],"request_url":"http://app.vmoiver.com/53137?qingapp=app_new","ispromote":"0","isalbum":"0","cate":[{"cateid":"78","catename":"生活"}]},{"postid":"53086","title":"\u201c拔叔\u201d為您揭開,丹麥人幸福生活的原因","wx_small_app_title":"\u201c拔叔\u201d為您揭開,丹麥人幸福生活的原因","pid":"1","app_fu_title":"","is_xpc":"0","is_promote":"0","is_xpc_zp":"0","is_xpc_cp":"0","is_xpc_fx":"0","is_album":"0","tags":"","recent_hot":"0","discussion":"0","image":"http://cs.vmovier.com/Uploads/cover/2017-12-04/5a24eb04cc804_cut.jpeg","rating":"7.8","duration":"118","publish_time":"1513267680","like_num":"209","share_num":"134","post_type":"1","cates":[{"cateid":"13","catename":"廣告"}],"request_url":"http://app.vmoiver.com/53086?qingapp=app_new","ispromote":"0","isalbum":"0","cate":[{"cateid":"13","catename":"廣告"}]},{"postid":"53136","title":"一秒治癒色盲患者:你的世界原本多彩","wx_small_app_title":"一秒治癒色盲患者:你的世界原本多彩","pid":"1","app_fu_title":"","is_xpc":"0","is_promote":"0","is_xpc_zp":"0","is_xpc_cp":"0","is_xpc_fx":"0","is_album":"0","tags":"","recent_hot":"0","discussion":"0","image":"http://cs.vmovier.com/Uploads/cover/2017-12-13/5a30a5825b813_cut.jpeg","rating":"7.7","duration":"205","publish_time":"1513267560","like_num":"204","share_num":"149","post_type":"1","cates":[{"cateid":"11","catename":"旅行"}],"request_url":"http://app.vmoiver.com/53136?qingapp=app_new","ispromote":"0","isalbum":"0","cate":[{"cateid":"11","catename":"旅行"}]},{"postid":"53140","title":"\"紐約時報\"年度評選「2017年十佳表演人物」","wx_small_app_title":"\"紐約時報\"年度評選「2017年十佳表演人物」","pid":"1","app_fu_title":"","is_xpc":"0","is_promote":"0","is_xpc_zp":"0","is_xpc_cp":"0","is_xpc_fx":"0","is_album":"0","tags":"","recent_hot":"0","discussion":"0","image":"http://cs.vmovier.com/Uploads/cover/2017-12-13/5a30c2b6f0941_cut.jpeg","rating":"7.6","duration":"637","publish_time":"1513181460","like_num":"347","share_num":"279","post_type":"1","cates":[{"cateid":"6","catename":"創意"}],"request_url":"http://app.vmoiver.com/53140?qingapp=app_new","ispromote":"0","isalbum":"0","cate":[{"cateid":"6","catename":"創意"}]},{"postid":"53130","title":"她其實沒那麼喜歡你","wx_small_app_title":"她其實沒那麼喜歡你","pid":"1","app_fu_title":"","is_xpc":"0","is_promote":"0","is_xpc_zp":"0","is_xpc_cp":"0","is_xpc_fx":"0","is_album":"0","tags":"","recent_hot":"0","discussion":"0","image":"http://cs.vmovier.com/Uploads/cover/2017-12-12/5a2f4b0327d09_cut.jpeg","rating":"7.6","duration":"299","publish_time":"1513181400","like_num":"350","share_num":"238","post_type":"1","cates":[{"cateid":"8","catename":"搞笑"}],"request_url":"http://app.vmoiver.com/53130?qingapp=app_new","ispromote":"0","isalbum":"0","cate":[{"cateid":"8","catename":"搞笑"}]}]
*/
private String status;
private String msg;
private List<DataBean> data;
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public List<DataBean> getData() {
return data;
}
public void setData(List<DataBean> data) {
this.data = data;
}
public static class DataBean {
/**
* postid : 53150
* title : 周杰倫的2000W個故事之「 最長的電影 」
* wx_small_app_title : 周杰倫的2000W個故事之「 最長的電影 」
* pid : 1
* app_fu_title :
* is_xpc : 1
* is_promote : 0
* is_xpc_zp : 1
* is_xpc_cp : 0
* is_xpc_fx : 0
* is_album : 0
* tags :
* recent_hot : 0
* discussion : 0
* image : http://cs.vmovier.com/Uploads/cover/2017-12-15/5a33449b93b79_cut.jpeg
* rating : 7.7
* duration : 401
* publish_time : 1513320097
* like_num : 122
* share_num : 147
* post_type : 1
* cates : [{"cateid":"13","catename":"廣告"}]
* request_url : http://app.vmoiver.com/53150?qingapp=app_new
* ispromote : 0
* isalbum : 0
* cate : [{"cateid":"13","catename":"廣告"}]
*/
private String postid;
private String title;
private String wx_small_app_title;
private String pid;
private String app_fu_title;
private String is_xpc;
private String is_promote;
private String is_xpc_zp;
private String is_xpc_cp;
private String is_xpc_fx;
private String is_album;
private String tags;
private String recent_hot;
private String discussion;
private String image;
private String rating;
private String duration;
private String publish_time;
private String like_num;
private String share_num;
private String post_type;
private String request_url;
private String ispromote;
private String isalbum;
private List<CatesBean> cates;
private List<CateBean> cate;
public String getPostid() {
return postid;
}
public void setPostid(String postid) {
this.postid = postid;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getWx_small_app_title() {
return wx_small_app_title;
}
public void setWx_small_app_title(String wx_small_app_title) {
this.wx_small_app_title = wx_small_app_title;
}
public String getPid() {
return pid;
}
public void setPid(String pid) {
this.pid = pid;
}
public String getApp_fu_title() {
return app_fu_title;
}
public void setApp_fu_title(String app_fu_title) {
this.app_fu_title = app_fu_title;
}
public String getIs_xpc() {
return is_xpc;
}
public void setIs_xpc(String is_xpc) {
this.is_xpc = is_xpc;
}
public String getIs_promote() {
return is_promote;
}
public void setIs_promote(String is_promote) {
this.is_promote = is_promote;
}
public String getIs_xpc_zp() {
return is_xpc_zp;
}
public void setIs_xpc_zp(String is_xpc_zp) {
this.is_xpc_zp = is_xpc_zp;
}
public String getIs_xpc_cp() {
return is_xpc_cp;
}
public void setIs_xpc_cp(String is_xpc_cp) {
this.is_xpc_cp = is_xpc_cp;
}
public String getIs_xpc_fx() {
return is_xpc_fx;
}
public void setIs_xpc_fx(String is_xpc_fx) {
this.is_xpc_fx = is_xpc_fx;
}
public String getIs_album() {
return is_album;
}
public void setIs_album(String is_album) {
this.is_album = is_album;
}
public String getTags() {
return tags;
}
public void setTags(String tags) {
this.tags = tags;
}
public String getRecent_hot() {
return recent_hot;
}
public void setRecent_hot(String recent_hot) {
this.recent_hot = recent_hot;
}
public String getDiscussion() {
return discussion;
}
public void setDiscussion(String discussion) {
this.discussion = discussion;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
public String getRating() {
return rating;
}
public void setRating(String rating) {
this.rating = rating;
}
public String getDuration() {
return duration;
}
public void setDuration(String duration) {
this.duration = duration;
}
public String getPublish_time() {
return publish_time;
}
public void setPublish_time(String publish_time) {
this.publish_time = publish_time;
}
public String getLike_num() {
return like_num;
}
public void setLike_num(String like_num) {
this.like_num = like_num;
}
public String getShare_num() {
return share_num;
}
public void setShare_num(String share_num) {
this.share_num = share_num;
}
public String getPost_type() {
return post_type;
}
public void setPost_type(String post_type) {
this.post_type = post_type;
}
public String getRequest_url() {
return request_url;
}
public void setRequest_url(String request_url) {
this.request_url = request_url;
}
public String getIspromote() {
return ispromote;
}
public void setIspromote(String ispromote) {
this.ispromote = ispromote;
}
public String getIsalbum() {
return isalbum;
}
public void setIsalbum(String isalbum) {
this.isalbum = isalbum;
}
public List<CatesBean> getCates() {
return cates;
}
public void setCates(List<CatesBean> cates) {
this.cates = cates;
}
public List<CateBean> getCate() {
return cate;
}
public void setCate(List<CateBean> cate) {
this.cate = cate;
}
public static class CatesBean {
/**
* cateid : 13
* catename : 廣告
*/
private String cateid;
private String catename;
public String getCateid() {
return cateid;
}
public void setCateid(String cateid) {
this.cateid = cateid;
}
public String getCatename() {
return catename;
}
public void setCatename(String catename) {
this.catename = catename;
}
}
public static class CateBean {
/**
* cateid : 13
* catename : 廣告
*/
private String cateid;
private String catename;
public String getCateid() {
return cateid;
}
public void setCateid(String cateid) {
this.cateid = cateid;
}
public String getCatename() {
return catename;
}
public void setCatename(String catename) {
this.catename = catename;
}
}
}
}
建立介面卡MyRecyclerViewAdapter的程式碼
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import org.xutils.image.ImageOptions;
import org.xutils.x;
import java.util.List;
/**
* Created by DELL on 2017/12/15.
*/
public class MyRecyclerViewAdapter extends RecyclerView.Adapter<MyRecyclerViewAdapter.ViewHolder> {
private Context context;
private List<MyGson.DataBean> data;
public MyRecyclerViewAdapter(Context context, List<MyGson.DataBean> data) {
this.context = context;
this.data = data;
}
@Override
public MyRecyclerViewAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view= LayoutInflater.from(context).inflate(R.layout.item,parent,false);
ViewHolder viewHolder=new ViewHolder(view);
return viewHolder;
}
@Override
public void onBindViewHolder(MyRecyclerViewAdapter.ViewHolder holder, int position) {
holder.tv.setText(data.get(position).getTitle());
ImageOptions options = new ImageOptions.Builder().setUseMemCache(true).setFailureDrawableId(R.mipmap.ic_launcher).setLoadingDrawableId(R.mipmap.ic_launcher).build();
x.image().bind(holder.image,data.get(position).getImage(),options);
}
@Override
public int getItemCount() {
return data.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
ImageView image;
TextView tv;
public ViewHolder(View itemView) {
super(itemView);
this.image = (ImageView) itemView.findViewById(R.id.image);
this.tv = (TextView) itemView.findViewById(R.id.tv);
}
}
}
AlankFragment的程式碼
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.google.gson.Gson;
import org.xutils.common.Callback;
import org.xutils.http.RequestParams;
import org.xutils.x;
import java.util.List;
/**
* A simple {@link Fragment} subclass.
*/
public class AlankFragment extends Fragment {
private RecyclerView rv;
private List<MyGson.DataBean>dataBeen;
private MyRecyclerViewAdapter adapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.fragment_alank, container, false);
rv= (RecyclerView) view.findViewById(R.id.rv);
LinearLayoutManager linearLayoutManager=new LinearLayoutManager(getContext(),LinearLayoutManager.VERTICAL,false);
rv.setLayoutManager(linearLayoutManager);
RequestParams params=new RequestParams("http://app.vmoiver.com/apiv3/post/getPostInCate?cateid=0&p=1");
x.http().get(params, new Callback.CommonCallback<String>() {
@Override
public void onSuccess(String result) {
MyGson myGson = new Gson().fromJson(result, MyGson.class);
dataBeen=myGson.getData();
adapter=new MyRecyclerViewAdapter(getContext(),dataBeen);
rv.setAdapter(adapter);
}
@Override
public void onError(Throwable ex, boolean isOnCallback) {
}
@Override
public void onCancelled(CancelledException cex) {
}
@Override
public void onFinished() {
}
});
return view;
}
}
BlankFragment的程式碼
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebResourceRequest;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
/**
* A simple {@link Fragment} subclass.
*/
public class BlankFragment extends Fragment {
private WebView wb;
private String url="www.baidu.com";
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.fragment_blank, container, false);
wb= (WebView) view.findViewById(R.id.wb);
wb.loadUrl(url);
wb.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
view.loadUrl(url);
return super.shouldOverrideUrlLoading(view, request);
}
});
WebSettings webSettings=wb.getSettings();
webSettings.setJavaScriptEnabled(true);
return view;
}
}
匯入一個gson的包
最後,別忘了新增各個許可權. ()
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_CALENDAR"/>
<uses-permission android:name="android.permission.WRITE_CALENDAR"/>