当前位置 博文首页 > 李猫er:【Android项目实战 | 从零开始写app(十)】Okhttp+glide+

    李猫er:【Android项目实战 | 从零开始写app(十)】Okhttp+glide+

    作者:[db:作者] 时间:2021-07-08 13:01

    在上一篇: Android项目实战 | 从零开始写app(九)】Tablayout+ViewPager实现页面分类顶部标题页面联动切换 的基础上实现数据的填充展示

    由于首页会展示到推荐新闻列表,所以今天先把后台的新闻数据先请求下来,就跳着更吧,后面再继续完善首页~

    ~这篇早早就写好了,奈何发布了几次老是说审核不通过,说内容违规???? 无可奈何~

    菜鸡一枚,写得不好,有问题的请指教~~
    在这里插入图片描述

    文章导航

    一、【Android项目实战 | 从零开始写app(一)】 创建项目

    二、【Android项目实战 | 从零开始写app(二)】实现闪屏页,启动app

    三、【Android项目实战 | 从零开始写app(三)】实现引导页,进入登录or主页面

    四、【Android项目实战 | 从零开始写app(四)】Okhttp+Gson实现服务端登录验证功能

    五、【Android项目实战 | 从零开始写app(五)】okhttp+gson实现服务端注册功能

    六、【Android项目实战 | 从零开始写app(六)】用TabLayout+ViewPager搭建App 框架主页面底部导航栏

    七、【Android项目实战 | 从零开始写app(七)】优化主页导航栏,禁用主页页面滑动切换效果

    八、【Android项目实战 | 从零开始写app(八)】实现app首页广告轮播图切换和搜索跳转

    九、【Android项目实战 | 从零开始写app(九)】Tablayout+ViewPager实现页面分类顶部标题页面联动切换

    十、【Android项目实战 | 从零开始写app(十)】Okhttp+glide+json+ListView实现新闻模块数据的填充显示

    十一、【Android项目实战 | 从零开始写app(十一)】实现app首页智慧服务页面服务分类数据的解析及点击跳转

    十二、【Android项目实战 | 从零开始写app(十二)】实现app首页智慧服务&热门推荐&热门主题、新闻

    十三、【Android项目实战 | 从零开始写app(十三)】实现用户中心模块清除token退出登录&信息修改等功能

    十四、【Android项目实战 | 从零开始写app(十四)】实现图片发布模块 | 必知必会之调用系统相机拍照、相册

    十五、【Android项目实战 | 从零开始写app(教程汇总)】Android 项目实战系列汇总、源代码


    本篇实现效果

    okhttp+gson+glide实现新闻分类模块数据的解析,并显示到ListView上,点击查看新闻详情。数据有限,只写新闻其中一个分类的新闻数据,其他的自己照着写。
    在这里插入图片描述

    本篇项目新增目录

    在这里插入图片描述

    NewsFragment

    修改NewsFragment中的代码如下:

    package com.example.myapp.fragment;
    
    import android.content.Intent;
    import android.util.Log;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.AdapterView;
    import android.widget.BaseAdapter;
    import android.widget.ImageView;
    import android.widget.ListView;
    import android.widget.TextView;
    import android.widget.Toast;
    
    import androidx.fragment.app.Fragment;
    import androidx.viewpager.widget.ViewPager;
    
    import com.bumptech.glide.Glide;
    import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
    import com.bumptech.glide.request.RequestOptions;
    import com.example.myapp.R;
    import com.example.myapp.activity.NewsWebViewActivity;
    import com.example.myapp.adapter.NewTabAdapter;
    import com.example.myapp.bean.BannerBean;
    import com.example.myapp.bean.NewsBean;
    import com.example.myapp.utils.APIConfig;
    import com.google.android.material.tabs.TabLayout;
    import com.google.gson.Gson;
    import com.youth.banner.Banner;
    import com.youth.banner.adapter.BannerImageAdapter;
    import com.youth.banner.holder.BannerImageHolder;
    import com.youth.banner.indicator.CircleIndicator;
    import com.youth.banner.listener.OnBannerListener;
    
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    
    import okhttp3.Call;
    import okhttp3.Callback;
    import okhttp3.OkHttpClient;
    import okhttp3.Request;
    import okhttp3.Response;
    
    /**
     * @ProjectName: MyApp
     * @Package: com.example.myapp.fragment
     * @ClassName: HomeFragment
     * @Description:
     * @Author: liyingxia
     * @CreateDate: 2021/4/18 14:34
     */
    public class NewsFragment extends BaseFragment{
        private static final String TAG = NewsFragment.class.getSimpleName();
        private Banner banner;
        private NewsAdapter newsAdapter;
        private ViewPager new_viewpager;
        private ListView listView;
        private NewTabAdapter newTabAdapter;
        private TabLayout tabLayout;
        private List<NewsBean.RowsBean> newBean;
        private List<BannerBean.RowsDTO> bannerList;
        @Override
        public View initView() {
            Log.i(TAG, "新闻的视图被实例化了");
            View view = View.inflate(getActivity(), R.layout.fragment_news, null);
    
            findView(view);
            return view;
        }
    
        private void findView(View view) {
            tabLayout = view.findViewById(R.id.tab_layout);
            new_viewpager = view.findViewById(R.id.view_pager);
            banner = view.findViewById(R.id.banner);
            listView = (ListView) view.findViewById(R.id.new_listView);
    
        }
    
    
        @Override
        public void initData() {
            super.initData();
            Log.e(TAG, "新闻中心的Fragment的数据被初始化了");
            
            initBanner();
            initTab();
            getHttpData();
            
        }
    
        private void initTab() {
            // 新闻分类标题导航栏
            String[] title = {"时政","电视","旅游","视频","广播","基层"};
            //创建装载Fragment的列表
            List<Fragment> fragmentlist;
            // 初始化列表,并把创建的6个Fragment页面添加到列表中
            fragmentlist = new ArrayList<>();
            fragmentlist.add(new NShizhengFragment());
            fragmentlist.add(new NTVFragment());
            fragmentlist.add(new NTravelFragment());
            fragmentlist.add(new NvideoFragment());
            fragmentlist.add(new NbrodcastFragment());
            fragmentlist.add(new NJicengFragment());
            newTabAdapter = new NewTabAdapter(getChildFragmentManager(),fragmentlist,title);
            newsAdapter = new NewsAdapter();
            new_viewpager.setAdapter(newTabAdapter);  // ViewPager与Adapter绑定
            tabLayout.setupWithViewPager(new_viewpager);  // TabLayout与ViewPager绑定
        }
    
        private void initBanner() {
            // Banner轮播图
            bannerList = new ArrayList<BannerBean.RowsDTO>();
            bannerList.add(new BannerBean.RowsDTO("http://192.93.196.45:8080/profile/home1.png", null));
            bannerList.add(new BannerBean.RowsDTO("http://192.93.196.45:8080/profile/home2.png", null));
            bannerList.add(new BannerBean.RowsDTO("http://192.93.196.45:8080/profile/home3.png", null));
            bannerList.add(new BannerBean.RowsDTO("http://192.93.196.45:8080/profile/home4.png", null));
            banner.setAdapter(new BannerImageAdapter<BannerBean