1. 程式人生 > >用百度獲取網路資料

用百度獲取網路資料

首先是四個佈局頁面



第一個是主體佈局


<?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"/>