zoukankan      html  css  js  c++  java
  • 影视分享App(三)(第六周)

     

     

    第六周

    所花时间

    25h左右

    代码量

    3000行左右

    博客量

    4篇

    学到的知识点

    使用python完成词频统计,影视分享APP的开发(还在开发中)

     

    摘要:第三阶段主要完成了对豆瓣影视数据(json)的提取以及解析,并且通过点击悬浮窗按钮让其显示指定数据的简单测试,解析数据起初使用的方法是Json和JsonArray的读取方法,这两种方法读取格式简单的数据还可以,但是豆瓣影视数据的格式有点复杂,读取起来麻烦,最后通过调用gson,问题相对来说简单了很多。

    一、开发阶段三

    首先分享一个牛X的json格式解析工具,JSON数据解析工具 使用这个工具可以将我们的json格式的数据生成JavaBean,不管你的json格式数据结构多复杂,都可以实现。生成后直接导入工程即可,这样就不用我们一个一个去设计Javabean了,完成本项目共使用7个Javabean类,而且结构复杂,这就是为什么使用此工具的原因。以下是本项目使用的Javabean类。

    /**
      * Copyright 2020 bejson.com 
      */
    package com.example.yingshifenxiang.bean;
    import java.util.List;
    
    /**
     * Auto-generated: 2020-03-28 15:55:4
     *
     * @author bejson.com (i@bejson.com)
     * @website http://www.bejson.com/java2pojo/
     */
    public class JsonRootBean {
    
        private int count;
        private int start;
        private int total;
        private List<Subjects> subjects;
        private String title;
        public void setCount(int count) {
             this.count = count;
         }
         public int getCount() {
             return count;
         }
    
        public void setStart(int start) {
             this.start = start;
         }
         public int getStart() {
             return start;
         }
    
        public void setTotal(int total) {
             this.total = total;
         }
         public int getTotal() {
             return total;
         }
    
        public void setSubjects(List<Subjects> subjects) {
             this.subjects = subjects;
         }
         public List<Subjects> getSubjects() {
             return subjects;
         }
    
        public void setTitle(String title) {
             this.title = title;
         }
         public String getTitle() {
             return title;
         }
    
    }
    JsonRootBean
    /**
      * Copyright 2020 bejson.com 
      */
    package com.example.yingshifenxiang.bean;
    import java.util.List;
    import java.util.Date;
    
    /**
     * Auto-generated: 2020-03-28 15:55:4
     *
     * @author bejson.com (i@bejson.com)
     * @website http://www.bejson.com/java2pojo/
     */
    public class Subjects {
    
        private Rating rating;
        private List<String> genres;
        private String title;
        private List<Casts> casts;
        private List<String> durations;
        private int collect_count;
        private Date mainland_pubdate;
        private boolean has_video;
        private String original_title;
        private String subtype;
        private List<Directors> directors;
        private List<Date> pubdates;
        private String year;
        private Images images;
        private String alt;
        private String id;
        public void setRating(Rating rating) {
             this.rating = rating;
         }
         public Rating getRating() {
             return rating;
         }
    
        public void setGenres(List<String> genres) {
             this.genres = genres;
         }
         public List<String> getGenres() {
             return genres;
         }
    
        public void setTitle(String title) {
             this.title = title;
         }
         public String getTitle() {
             return title;
         }
    
        public void setCasts(List<Casts> casts) {
             this.casts = casts;
         }
         public List<Casts> getCasts() {
             return casts;
         }
    
        public void setDurations(List<String> durations) {
             this.durations = durations;
         }
         public List<String> getDurations() {
             return durations;
         }
    
        public void setCollect_count(int collect_count) {
             this.collect_count = collect_count;
         }
         public int getCollect_count() {
             return collect_count;
         }
    
        public void setMainland_pubdate(Date mainland_pubdate) {
             this.mainland_pubdate = mainland_pubdate;
         }
         public Date getMainland_pubdate() {
             return mainland_pubdate;
         }
    
        public void setHas_video(boolean has_video) {
             this.has_video = has_video;
         }
         public boolean getHas_video() {
             return has_video;
         }
    
        public void setOriginal_title(String original_title) {
             this.original_title = original_title;
         }
         public String getOriginal_title() {
             return original_title;
         }
    
        public void setSubtype(String subtype) {
             this.subtype = subtype;
         }
         public String getSubtype() {
             return subtype;
         }
    
        public void setDirectors(List<Directors> directors) {
             this.directors = directors;
         }
         public List<Directors> getDirectors() {
             return directors;
         }
    
        public void setPubdates(List<Date> pubdates) {
             this.pubdates = pubdates;
         }
         public List<Date> getPubdates() {
             return pubdates;
         }
    
        public void setYear(String year) {
             this.year = year;
         }
         public String getYear() {
             return year;
         }
    
        public void setImages(Images images) {
             this.images = images;
         }
         public Images getImages() {
             return images;
         }
    
        public void setAlt(String alt) {
             this.alt = alt;
         }
         public String getAlt() {
             return alt;
         }
    
        public void setId(String id) {
             this.id = id;
         }
         public String getId() {
             return id;
         }
    
    }
    Subjects
    /**
      * Copyright 2020 bejson.com 
      */
    package com.example.yingshifenxiang.bean;
    
    /**
     * Auto-generated: 2020-03-28 15:55:4
     *
     * @author bejson.com (i@bejson.com)
     * @website http://www.bejson.com/java2pojo/
     */
    public class Rating {
    
        private int max;
        private double average;
        private Details details;
        private String stars;
        private int min;
        public void setMax(int max) {
             this.max = max;
         }
         public int getMax() {
             return max;
         }
    
        public void setAverage(double average) {
             this.average = average;
         }
         public double getAverage() {
             return average;
         }
    
        public void setDetails(Details details) {
             this.details = details;
         }
         public Details getDetails() {
             return details;
         }
    
        public void setStars(String stars) {
             this.stars = stars;
         }
         public String getStars() {
             return stars;
         }
    
        public void setMin(int min) {
             this.min = min;
         }
         public int getMin() {
             return min;
         }
    
    }
    Rating
    /**
      * Copyright 2020 bejson.com 
      */
    package com.example.yingshifenxiang.bean;
    
    /**
     * Auto-generated: 2020-03-28 15:55:4
     *
     * @author bejson.com (i@bejson.com)
     * @website http://www.bejson.com/java2pojo/
     */
    public class Casts {
    
        private Avatars avatars;
        private String name_en;
        private String name;
        private String alt;
        private String id;
        public void setAvatars(Avatars avatars) {
             this.avatars = avatars;
         }
         public Avatars getAvatars() {
             return avatars;
         }
    
        public void setName_en(String name_en) {
             this.name_en = name_en;
         }
         public String getName_en() {
             return name_en;
         }
    
        public void setName(String name) {
             this.name = name;
         }
         public String getName() {
             return name;
         }
    
        public void setAlt(String alt) {
             this.alt = alt;
         }
         public String getAlt() {
             return alt;
         }
    
        public void setId(String id) {
             this.id = id;
         }
         public String getId() {
             return id;
         }
    
    }
    Casts
    /**
      * Copyright 2020 bejson.com 
      */
    package com.example.yingshifenxiang.bean;
    
    /**
     * Auto-generated: 2020-03-28 15:55:4
     *
     * @author bejson.com (i@bejson.com)
     * @website http://www.bejson.com/java2pojo/
     */
    public class Avatars {
    
        private String small;
        private String large;
        private String medium;
        public void setSmall(String small) {
             this.small = small;
         }
         public String getSmall() {
             return small;
         }
    
        public void setLarge(String large) {
             this.large = large;
         }
         public String getLarge() {
             return large;
         }
    
        public void setMedium(String medium) {
             this.medium = medium;
         }
         public String getMedium() {
             return medium;
         }
    
    }
    Avatars
    /**
      * Copyright 2020 bejson.com 
      */
    package com.example.yingshifenxiang.bean;
    
    /**
     * Auto-generated: 2020-03-28 15:55:4
     *
     * @author bejson.com (i@bejson.com)
     * @website http://www.bejson.com/java2pojo/
     */
    public class Directors {
    
        private Avatars avatars;
        private String name_en;
        private String name;
        private String alt;
        private String id;
        public void setAvatars(Avatars avatars) {
             this.avatars = avatars;
         }
         public Avatars getAvatars() {
             return avatars;
         }
    
        public void setName_en(String name_en) {
             this.name_en = name_en;
         }
         public String getName_en() {
             return name_en;
         }
    
        public void setName(String name) {
             this.name = name;
         }
         public String getName() {
             return name;
         }
    
        public void setAlt(String alt) {
             this.alt = alt;
         }
         public String getAlt() {
             return alt;
         }
    
        public void setId(String id) {
             this.id = id;
         }
         public String getId() {
             return id;
         }
    
    }
    Directors
    /**
      * Copyright 2020 bejson.com 
      */
    package com.example.yingshifenxiang.bean;
    
    /**
     * Auto-generated: 2020-03-28 15:55:4
     *
     * @author bejson.com (i@bejson.com)
     * @website http://www.bejson.com/java2pojo/
     */
    public class Images {
    
        private String small;
        private String large;
        private String medium;
        public void setSmall(String small) {
             this.small = small;
         }
         public String getSmall() {
             return small;
         }
    
        public void setLarge(String large) {
             this.large = large;
         }
         public String getLarge() {
             return large;
         }
    
        public void setMedium(String medium) {
             this.medium = medium;
         }
         public String getMedium() {
             return medium;
         }
    
    }
    Images

    有了这些,就可以在MainActivity.java具体操作啦,下面是主要的代码,通过主界面悬浮按钮的点击按钮事件来实现数据的读取,在之前的MainActivity.java基础上修改就可以了。

    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
            setSupportActionBar(toolbar);
    
            FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
            fab.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(final View view) {
                    ///http://api.douban.com/v2/movie/in_theaters
                    //没写android代码,测试http api接口
                    //推荐 PostMan post
                    //不能用浏览器 get
                    //传入的参数 {"start":2,"count":2}
                    String url ="http://api.douban.com/v2/movie/in_theaters?apikey=0df993c66c0c636e29ecbb5344252a4a&start=0&count=10";
                    JsonObjectRequest jsonObjectRequest=new JsonObjectRequest(
                            Request.Method.POST,
                            url,
                            //"{"start":2,"count":2}",
                            new Response.Listener<JSONObject>() {
                                @Override
                                public void onResponse(JSONObject response) {
                                    Log.d("volley",response.toString());
                                    /*
                                    String  title="";
                                    JSONArray subjects=null;
                                    int total = 0;
                                    try {
                                        total = response.getInt("total");
                                        int start = response.getInt("start");
                                        int count = response.getInt("count");
                                        subjects = response.getJSONArray("subjects");
                                        title = response.get("title").toString();
                                    } catch (JSONException e) {
                                        e.printStackTrace();
                                    }
                                    //{key2:value2,key1:value1} 可嵌套 value可以是Json  JsonArray
                                    Gson gson =new Gson();
                                    //Subject s1=gson.fromJson(subjects.getJSONObject(0).toString(), Subject.class);
                                    //Subject s2=gson.fromJson(subjects.getJSONObject(1).toString(), Subject.class);
                                    Type type=new TypeToken<List<Subject>>(){}.getType();
                                    List<Subject> subjectList=gson.fromJson(subjects.toString(),type);
                                    //Log.d("ActionButton",s2.title+s2.year);
                                     */
    
                                    Gson gson = new Gson();
                                    JsonRootBean b = gson.fromJson(response.toString(), JsonRootBean.class);
                                    Subjects s = b.getSubjects().get(0);
                                    Snackbar sb = Snackbar.make(view, s.getTitle() + s.getYear(),Snackbar.LENGTH_SHORT);
                                    View v = sb.getView();
                                    TextView snackbar_text = (TextView)v.findViewById(R.id.snackbar_text);
                                    snackbar_text.setTextColor(Color.parseColor("#FFFFFF"));
                                    sb.show();
                                }
                            },
                            new Response.ErrorListener() {
                                @Override
                                public void onErrorResponse(VolleyError error) {
                                    Log.d("volley",error.toString());
    
                                }
                            }
    
                    );
                    MyApplication.addRequest(jsonObjectRequest,"MainActivity");
                }
            });
    MainActivity

    效果图

     到这,第三阶段的任务就基本实现了。后面的任务会更重。。。

  • 相关阅读:
    PChar,PAnsiChar,String,AnsiString,Char数组,AnsiChar数组转换
    Property ClientHeight does not exist 问题解决
    单调栈求笛卡尔树
    luogu4294 [WC2008]游览计划(状压DP/斯坦纳树)
    luogu4074 [WC2013]糖果公园(树上带修莫队)
    loj6570 毛毛虫计数(生成函数FFT)
    CF1097D Makoto and a Blackboard(期望)
    CF600E Lomsat gelral(线段树合并)
    luogu4383 [八省联考2018]林克卡特树(带权二分+dp)
    51nod1847 奇怪的数学题 (Min_25筛+第二类斯特林数)
  • 原文地址:https://www.cnblogs.com/MoooJL/p/12589687.html
Copyright © 2011-2022 走看看