Android 中Imageloader缓存+Banner+Httpurl

public class ReAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    Context context;
    List<Data.DataBean.ComicsBean>list;
    private Viewholder viewholder;
    private File file;


    void Adapter(){
      //  String path = Environment.getDownloadCacheDirectory().getAbsolutePath();
        file = new File(Environment.getExternalStorageDirectory(), "/mnt/sdcard/imageloader");
        ImageLoaderConfiguration config = new ImageLoaderConfiguration
                .Builder(context)
                .memoryCacheExtraOptions(480, 800) // maxwidth, max height,即保存的每个缓存文件的最大长宽
                .threadPoolSize(3)//线程池内加载的数量
                .threadPriority(Thread.NORM_PRIORITY -2)
                .denyCacheImageMultipleSizesInMemory()
                .memoryCache(new UsingFreqLimitedMemoryCache(2* 1024 * 1024)) // You can pass your own memory cache implementation/你可以通过自己的内存缓存实现
                .memoryCacheSize(2 * 1024 * 1024)
                .discCacheSize(50 * 1024 * 1024)
                .tasksProcessingOrder(QueueProcessingType.LIFO)
                .discCacheFileCount(100) //缓存的文件数量
                .defaultDisplayImageOptions(DisplayImageOptions.createSimple())
                .writeDebugLogs()
                .build();//开始构建
       // ImageLoader.getInstance().init(config);
    }

    public ReAdapter(Context context, List<Data.DataBean.ComicsBean> list) {
        this.context = context;
        this.list = list;
        Adapter();
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view=View.inflate(context, R.layout.item1,null);
        viewholder = new Viewholder(view);
        viewholder.textView= (TextView) view.findViewById(R.id.itemtv1);
        viewholder.textView2= (TextView) view.findViewById(R.id.itemtv2);
        viewholder.imageView= (ImageView) view.findViewById(R.id.imageView2);


        return viewholder;

    }
    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
         // 判断sd卡是否存在
        Log.e("-----------", "onBindViewHolder: " );
        if (file.exists()){
            DisplayImageOptions options = new DisplayImageOptions.Builder().build();
            String[] list = file.list();
            ImageLoader.getInstance().displayImage(list[position], viewholder.imageView, options);
        }else {
        viewholder.itemView.setTag(position);
        Data.DataBean.ComicsBean comicsBean = list.get(position);
        Glide.with(context).load(comicsBean.getCover_image_url()).into(viewholder.imageView);
        viewholder.textView.setText(comicsBean.getTitle());
        viewholder.textView2.setText("更多");
            viewholder.textView2.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Intent in=new Intent(context,Pindao.class);
                    context.startActivity(in);
                }
            });
          viewholder.imageView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Intent in=new Intent(context,Webviews.class);
                    context.startActivity(in);
                }
            });

   }
    }

    @Override
    public int getItemCount() {
        return list.size();
    }
    private class Viewholder extends RecyclerView.ViewHolder{

        public Viewholder(View itemView) {
            super(itemView);
        }
        TextView textView,textView2;
        ImageView imageView;
    }

}

-------------------------------------------------------------

public class Manhua extends Fragment  {
  
    List<Data.DataBean.ComicsBean>list=new ArrayList<>();
    List<Bean.DataBean.InfosBean.BannersBean>listimage=new ArrayList<>();
    String url="http://api.kkmh.com/v1/daily/comic_lists/0?since=0&gender=0&sa_event=eyJwcm9qZWN0Ijoia3VhaWthbl9hcHAiLCJ0aW1lIjoxNDg3ODI4ODU4NjAwLCJwcm9wZXJ0aWVzIjp7IkhvbWVwYWdlVGFiTmFtZSI6IueDremXqCIsIlZDb21tdW5pdHlUYWJOYW1lIjoi54Ot6ZeoIiwiJG9zX3ZlcnNpb24iOiI0LjIuMiIsIkdlbmRlclR5cGUiOiLlpbPniYgiLCJGcm9tSG9tZXBhZ2VUYWJOYW1lIjoi54Ot6ZeoIiwiJGxpYl92ZXJzaW9uIjoiMS42LjM0IiwiJG5ldHdvcmtfdHlwZSI6IldJRkkiLCIkd2lmaSI6dHJ1ZSwiJG1hbnVmYWN0dXJlciI6InNhbXN1bmciLCJGcm9tSG9tZXBhZ2VVcGRhdGVEYXRlIjowLCIkc2NyZWVuX2hlaWdodCI6NTc2LCJIb21lcGFnZVVwZGF0ZURhdGUiOjAsIlByb3BlcnR5RXZlbnQiOiJSZWFkSG9tZVBhZ2UiLCJGaW5kVGFiTmFtZSI6IuaOqOiNkCIsImFidGVzdF9ncm91cCI6NDYsIiRzY3JlZW5fd2lkdGgiOjEwMjQsIiRvcyI6IkFuZHJvaWQiLCJUcmlnZ2VyUGFnZSI6IkhvbWVQYWdlIiwiJGNhcnJpZXIiOiJDTUNDIiwiJG1vZGVsIjoiR1QtUDUyMTAiLCIkYXBwX3ZlcnNpb24iOiIzLjguMSJ9LCJ0eXBlIjoidHJhY2siLCJkaXN0aW5jdF9pZCI6IkE6OTA1MTA0Mjc2Mzc1NTEwOSIsIm9yaWdpbmFsX2lkIjoiQTo5MDUxMDQyNzYzNzU1MTA5IiwiZXZlbnQiOiJSZWFkSG9tZVBhZ2UifQ%3D%3D";
    private ReAdapter adapter;
    private RecyclerView recyclerView;
    private Banner banner;
    private ArrayList<String> list1=new ArrayList<>();
    private List<Data.DataBean.ComicsBean> mList;
    private TextView gengduo;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.manhua, container, false);
        initData(view);
        getbanner();
        getUrlutils();
        return view;
    }

    private void initData(View view) {
        mList = new ArrayList<>();
        banner = (Banner) view.findViewById(R.id.banner);
        recyclerView = (RecyclerView) view.findViewById(R.id.recycleview);
        GridLayoutManager gridLayoutManager=new GridLayoutManager(getActivity(),2,GridLayoutManager.VERTICAL,false);
        recyclerView.setLayoutManager(gridLayoutManager);
        //如果确定每个item的内容不会改变RecyclerView的大小,设置这个选项可以提高性能
        recyclerView.setHasFixedSize(true);
    }
    private void getbanner() {
        banner.setImageLoader(new GlideimageLoader());
        new Thread(){
            String url1 = "http://api.kkmh.com/v1/topic_new/discovery_list?gender=0&sa_event=eyJwcm9qZWN0Ijoia3VhaWthbl9hcHAiLCJ0aW1lIjoxNDg3ODM5MDM5MzE1LCJwcm9wZXJ0aWVzIjp7IkhvbWVwYWdlVGFiTmFtZSI6IueDremXqCIsIlZDb21tdW5pdHlUYWJOYW1lIjoi54Ot6ZeoIiwiJG9zX3ZlcnNpb24iOiI0LjIuMiIsIkdlbmRlclR5cGUiOiLlpbPniYgiLCJGcm9tRmluZENhdGVnb3J5VGFiTmFtZSI6IuWFqOmDqCIsIklzQXV0b0xvYWQiOmZhbHNlLCIkbGliX3ZlcnNpb24iOiIxLjYuMzQiLCIkbmV0d29ya190eXBlIjoiV0lGSSIsIiR3aWZpIjp0cnVlLCIkbWFudWZhY3R1cmVyIjoic2Ftc3VuZyIsIkZyb21GaW5kVGFiTmFtZSI6IuaOqOiNkCIsIiRzY3JlZW5faGVpZ2h0Ijo1NzYsIkNhdGVnb3J5Ijoi5peg5rOV6I635Y-WIiwiSG9tZXBhZ2VVcGRhdGVEYXRlIjowLCJQcm9wZXJ0eUV2ZW50IjoiUmVhZEZpbmRQYWdlIiwiRmluZFRhYk5hbWUiOiLmjqjojZAiLCJhYnRlc3RfZ3JvdXAiOjQ2LCIkc2NyZWVuX3dpZHRoIjoxMDI0LCJGaW5kQ2F0ZWdvcnlUYWJOYW1lIjoi5YWo6YOoIiwiJG9zIjoiQW5kcm9pZCIsIlRyaWdnZXJQYWdlIjoiSG9tZVBhZ2UiLCIkY2FycmllciI6IkNNQ0MiLCIkbW9kZWwiOiJHVC1QNTIxMCIsIiRhcHBfdmVyc2lvbiI6IjMuOC4xIn0sInR5cGUiOiJ0cmFjayIsImRpc3RpbmN0X2lkIjoiQTo5MDUxMDQyNzYzNzU1MTA5Iiwib3JpZ2luYWxfaWQiOiJBOjkwNTEwNDI3NjM3NTUxMDkiLCJldmVudCI6IlJlYWRGaW5kUGFnZSJ9";
            @Override
            public void run() {
                super.run();
                url1 = HttpUtils.getUrlConnect(url1);
                banner.post(new Runnable() {
                    @Override
                    public void run() {
                        Gson gson2 = new Gson();
                        Bean bean = gson2.fromJson(url1, Bean.class);
                        List<Bean.DataBean.InfosBean> infos = bean.getData().getInfos();
                        for (Bean.DataBean.InfosBean dd: infos) {
                            List<Bean.DataBean.InfosBean.BannersBean> banners = dd.getBanners();
                            for (Bean.DataBean.InfosBean.BannersBean nn : banners) {
                                String pic = nn.getPic();
                                list1.add(pic);
                    }
                    }

                        //设置指示器位置(当banner模式中有指示器时)
                        banner.setIndicatorGravity(BannerConfig.CENTER);
                        //设置图片集合
                        banner.setImages(list1);
                        //banner设置方法全部调用完毕时最后调用
                        //设置自动轮播,默认为true
                        banner.isAutoPlay(true);
                        banner.start();

                    }
                });
            }
        }.start();
    }
    public void getUrlutils() {
        RequestParams parmars = new RequestParams(url);
        x.http().get(parmars, new Callback.CommonCallback<String>() {

            @Override
            public void onSuccess(String result) {
                if (result != null) {
                    Gson gson = new Gson();
                    Data bean = gson.fromJson(result, Data.class);
                    List<Data.DataBean.ComicsBean> comicsBeen = bean.getData().getComics();
                    mList.addAll(comicsBeen);
                }
            }

            @Override
            public void onError(Throwable ex, boolean isOnCallback) {
                Log.e("-------------", "onError: "+ex);
            }

            @Override
            public void onCancelled(CancelledException cex) {
                Log.e("-------------", "onError: 2222222222222222222222");
            }

            @Override
            public void onFinished() {
                adapter = new ReAdapter(getActivity(),mList);
                recyclerView.setAdapter(adapter);
            }
        });
    }
    class GlideimageLoader extends ImageLoader {
        /**
         注意:
         1.图片加载器由自己选择,这里不限制,只是提供几种使用方法
         2.返回的图片路径为Object类型,由于不能确定你到底使用的那种图片加载器,
         传输的到的是什么格式,那么这种就使用Object接收和返回,你只需要强转成你传输的类型就行,
         */
        @Override
        public void displayImage(Context context, Object path, ImageView imageView) {
            Glide.with(context).load(path).into(imageView);

        }
    }
}
----------------------------------------------------------------------
数据请求:
public class HttpUtils {
      public static String getUrlConnect(String urlpath){
              try {
                  URL url=new URL(urlpath);
                  HttpURLConnection httpURLConnection= (HttpURLConnection) url.openConnection();
                  httpURLConnection.setRequestMethod("GET");
                  httpURLConnection.setDoInput(true);
                  httpURLConnection.connect();
                  System.out.println(" -------> code "+httpURLConnection.getResponseCode());
                  if (httpURLConnection.getResponseCode()==200){
                      InputStream in = httpURLConnection.getInputStream();
                      StringBuffer str=new StringBuffer();
                      int len=-1;
                      byte[]buff=new byte[1024];
                      while ((len=in.read(buff))!=-1){
                          str.append(new String(buff,0,len,"utf-8"));
                      }
                      in.close();
                      httpURLConnection.disconnect();
                      return str.toString();
                  }else {
                      return  null;

                  }

              } catch (Exception e) {
                  e.printStackTrace();
              }

              return  null;
          }
}

-----------------------------------------------------
所需的依赖:
compile 'org.xutils:xutils:3.5.0'
compile 'com.youth.banner:banner:1.4.9'
compile 'com.google.code.gson:gson:2.8.1'
compile project(':xlsitview')
compile 'com.android.support:recyclerview-v7:25.3.1'
compile 'com.github.bumptech.glide:glide:3.8.0'
compile files('libs/universal-image-loader-1.9.5.jar')


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值