okHttp的(get,还有一些其他功能)实际应用

主页面

 vip = (ViewPager) findViewById(R.id.main_vip);
    tab = (TabLayout) findViewById(R.id.main_tab);
    list = new ArrayList<>();
    Fragment1 fragment1 = new Fragment1();
    Fragment2 fragment2 = new Fragment2();
    Fragment3 fragment3 = new Fragment3();
    Fragment4 fragment4 = new Fragment4();
    Fragment5 fragment5 = new Fragment5();
    list.add(fragment1);
    list.add(fragment2);
    list.add(fragment3);
    list.add(fragment4);
    list.add(fragment5);

    list1 = new ArrayList<>();
    for (int z = 0; z < 5; z++) {
        list1.add("第" + z + "个");
    }

    vip.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
        @Override
        public Fragment getItem(int position) {
            return list.get(position);
        }

        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {

        }

        @Override
        public int getCount() {
            return list.size();
        }

        @Override
        public CharSequence getPageTitle(int position) {
            return list1.get(position);
        }
    });

    tab.setupWithViewPager(vip);
}

Fragment1

public class Fragment1 extends Fragment {
    private final int ZHI = 0x11;
    private final String PATH = 你自己的url;
    public Handler handler;

    {
        handler = new Handler() {

            private MyAdapter adapter;
            private Bean bean;

            @Override
            public void handleMessage(Message msg) {
                super.handleMessage(msg);
                if (msg.what == ZHI) {
                    SqliteUtils utils = new SqliteUtils(getActivity());
                    String s = (String) msg.obj;
                   //得到数据库的字符串
                  String s1 = utils.find();
                  //数据库如果为空
                  if (s1 == null)

                    {
                   //传过来的msg.obj不为空
                        if (s != null) {
   //添加到数据库
                            utils.add(s);
                        } else {
                            return;
                        }

                        Gson gson = new Gson();
                        bean = gson.fromJson(s, Bean.class);
//第一次从网络上获取
 Toast.makeText(getActivity(), "网路获取", Toast.LENGTH_SHORT).show();
                    }
                    else {
                        Gson gson = new Gson();
                        bean = gson.fromJson(s1, Bean.class);
//第二次从数据库获取
 Toast.makeText(getActivity(), "数据库获取", Toast.LENGTH_SHORT).show();

                    }

                    List<Bean.ResultBean.DataBean> data = bean.getResult().getData();

                    if (adapter == null) {
                        adapter = new MyAdapter(getActivity(), data);
                        lv.setAdapter(adapter);
                    } else {

 adapter.more(data, pd);
                        adapter.notifyDataSetChanged();
                    }

                    lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                        @Override
                        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {

                          
  Intent intent = new Intent(getActivity(), SecondActivity.class);

                            startActivity(intent);
                        }
                    });

                }

            }
        };
    }

    private View view;
    private ListView lv;
    private SpringView sp;
    private boolean pd;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.fragment1, container, false);

        return view;
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
//        private View view;
//        private ListView lv;
//        private SpringView sp;
//        private boolean pd;
        sp = view.findViewById(R.id.fragment_sp);
        lv = view.findViewById(R.id.fragment_lv);
        sp.setType(SpringView.Type.FOLLOW);
        sp.setHeader(new DefaultHeader(getActivity()));
        sp.setFooter(new DefaultHeader(getActivity()));

        get(PATH);

        sp.setListener(new SpringView.OnFreshListener() {


            @Override
            public void onRefresh() {
//根据pd来确定是上拉刷新还是下拉加载
                get(PATH);
                pd = true;
                finishFreshAndLoad();
            }

            @Override
            public void onLoadmore() {
                get(PATH);
                pd = false;
                finishFreshAndLoad();
            }
        });

    }

    public void get(final String url1) {
       //子线程
        new Thread() {
            @Override
            public void run() {
                super.run();
                try {
                    String uri = getURI(url1);
                    Message message = new Message();
                    message.obj = uri;
                    message.what = ZHI;
                    handler.sendMessage(message);

                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }.start();
    }

    private String getURI(String url) throws IOException {
//ok的get的方法
        OkHttpClient client = new OkHttpClient();
        Request build = new Request.Builder()
                .url(url)
                .build();

        Response execute = client.newCall(build).execute();

        return execute.body().string();
    }
//刷新完毕后自动关闭
    private void finishFreshAndLoad() {
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                sp.onFinishFreshAndLoad();
            }
        }, 1000);
    }

}

适配器

public class MyAdapter extends BaseAdapter {
    private List<Bean.ResultBean.DataBean> data;
    private Context context;
    private DisplayImageOptions op;

    public MyAdapter(Context context, List<Bean.ResultBean.DataBean> data) {
        this.context = context;
        this.data = data;
        op = new DisplayImageOptions.Builder().displayer(new CircleBitmapDisplayer()).cacheInMemory(true).cacheOnDisk(true).build();

    }

    @Override
    public int getCount() {
        return data.size();
    }
//进行判断是刷新还是加载
    public void more(List<Bean.ResultBean.DataBean> data1, boolean pd) {
        for (Bean.ResultBean.DataBean bean : data1) {
            if (pd) {
                data.add(0, bean);
            } else {
                data.add(bean);
            }

        }
    }

    @Override
    public Object getItem(int i) {
        return data.get(i);
    }

    @Override
    public long getItemId(int i) {
        return i;
    }
//没有优化 可自行优化
    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        view = View.inflate(context, R.layout.item, null);
        TextView tv = view.findViewById(R.id.item_tv);
        ImageView img = view.findViewById(R.id.item_img);
        tv.setText("从集合中获取的文字");
        String s =("从集合中获取的图片地址");

        ImageLoader.getInstance().displayImage(s,img,op);
        //ImageLoader.getInstance().displayImage(s,img,op);
        return view;
    }
}

有关数据的处理方法

//得到SD缓存内容的大小

  public static String getTotalCacheSize(Context context) throws Exception {
            long cacheSize = getFolderSize(context.getCacheDir());
            if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
                cacheSize += getFolderSize(context.getExternalCacheDir());
            }
            return getFormatSize(cacheSize);
        }

//清除缓存的内容
        public static void clearAllCache(Context context) {
            deleteDir(context.getCacheDir());
            if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
                deleteDir(context.getExternalCacheDir());
            }
        }
//删除文件
        private static boolean deleteDir(File dir) {
            if (dir != null && dir.isDirectory()) {
                String[] children = dir.list();
                for (int i = 0; i < children.length; i++) {
                    boolean success = deleteDir(new File(dir, children[i]));
                    if (!success) {
                        return false;
                    }
                }
            }
            return dir.delete();
        }

        // 获取文件
        //Context.getExternalFilesDir() --> SDCard/Android/data/你的应用的包名/files/ 目录,一般放一些长时间保存的数据
        //Context.getExternalCacheDir() --> SDCard/Android/data/你的应用包名/cache/目录,一般存放临时缓存数据
        public static long getFolderSize(File file) throws Exception {
            long size = 0;
            try {
                File[] fileList = file.listFiles();
                for (int i = 0; i < fileList.length; i++) {
                    // 如果下面还有文件
                    if (fileList[i].isDirectory()) {
                        size = size + getFolderSize(fileList[i]);
                    } else {
                        size = size + fileList[i].length();
                    }
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return size;
        }

        /**
         * 格式化单位
         *
         * @param size
         * @return
         */
        public static String getFormatSize(double size) {
            double kiloByte = size / 1024;
            if (kiloByte < 1) {
//            return size + "Byte";
                return "0K";
            }

            double megaByte = kiloByte / 1024;
            if (megaByte < 1) {
                BigDecimal result1 = new BigDecimal(Double.toString(kiloByte));
                return result1.setScale(2, BigDecimal.ROUND_HALF_UP)
                        .toPlainString() + "KB";
            }

            double gigaByte = megaByte / 1024;
            if (gigaByte < 1) {
                BigDecimal result2 = new BigDecimal(Double.toString(megaByte));
                return result2.setScale(2, BigDecimal.ROUND_HALF_UP)
                        .toPlainString() + "MB";
            }

            double teraBytes = gigaByte / 1024;
            if (teraBytes < 1) {
                BigDecimal result3 = new BigDecimal(Double.toString(gigaByte));
                return result3.setScale(2, BigDecimal.ROUND_HALF_UP)
                        .toPlainString() + "GB";
            }
            BigDecimal result4 = new BigDecimal(teraBytes);
            return result4.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString()
                    + "TB";
        }

数据库的创建

public Sqlite(Context context) {
    super(context, "yuekao.db", null, 1);
}

@Override
public void onCreate(SQLiteDatabase sd) {
    sd.execSQL("create table yuekao (id integer primary key autoincrement,zhi varchar(20))");
}

@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

}

数据库的方法


public class SqliteUtils {

    private final SQLiteDatabase sd;
    private String TABLE = "yuekao";
    private String fanhui;

    public SqliteUtils(Context context) {
        Sqlite sqlite = new Sqlite(context);
        sd = sqlite.getWritableDatabase();
    }

    public void add(String z) {
        ContentValues values = new ContentValues();
        values.put("zhi",z);
        sd.insert(TABLE,null,values);
    }
    public String   find(){

        Cursor query = sd.query(TABLE, null, null, null, null, null, null);
        while(query.moveToNext())
        {
            fanhui = query.getString(query.getColumnIndex("zhi"));
        }
        return fanhui;
    }
}


方法的调用

//静态可直接调用

 textView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                try {
                    clearAllCache(SecondActivity.this);
                    String size = getTotalCacheSize(SecondActivity.this);
                    tv2.setText(size);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });


        try {
            tv2 = (TextView) findViewById(R.id.second_tv1);

            String size = getTotalCacheSize(SecondActivity.this);
            tv2.setText(size);
        } catch (Exception e) {
            e.printStackTrace();
        }


这样基本就ok了



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值