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

来源:互联网 发布:手机淘宝店铺添加收藏 编辑:程序博客网 时间:2024/06/06 03:07

主页面

 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);}@Overridepublic void onCreate(SQLiteDatabase sd) {    sd.execSQL("create table yuekao (id integer primary key autoincrement,zhi varchar(20))");}@Overridepublic 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了



原创粉丝点击