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')
Android 中Imageloader缓存+Banner+Httpurl
最新推荐文章于 2021-11-01 13:37:47 发布