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了
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(); }
阅读全文
0 0
- okHttp的(get,还有一些其他功能)实际应用
- OkHttp缓存功能的应用
- Okhttp Get请求的简单应用
- IPHONE4的一些其他功能
- PageOffice的一些其他功能
- 关于freebsd 命令提示符()[还有一些其他的设置]
- poj2104 分桶法与平方分割 还有一些其他的感悟
- 一些应用的功能实现
- Data Mining运用的理论与实际应用功能
- MySQL 备份的实际应用与功能介绍
- OkHttp的Get和Post
- OkHttp的一些封装
- jsp中含有多个Highcharts的统计图,还有一些其他资料,生成pdf文件
- javajdbc中的Statement到底是什么,怎么理解,还有其他一些jdbc的概念
- hone hone clock 与小松鼠驾到~还有牛顿摆等一些其他好玩的东西
- log4j在实际开发中应用场合的一些"潜规则"
- MySQL数据库在实际应用一些方面的介绍
- Java实际项目中应用的一些技巧(不断更新)
- 什么时候mybatis 使用@param
- 暴力+字符串——A*B Problem
- maven配置文件setting.xml、pom.xml
- Java 中的异常和处理详解
- LOL卡特基础连招与细节探究
- okHttp的(get,还有一些其他功能)实际应用
- Android8.0 Camera 快门声音控制
- hadoop集群配置注意事项
- vps
- sizeof与二维数组
- 让外部网络访问K8S service的四种方式
- CDH安装过程说明以及注意事项
- HDU 6194 后缀数组+单调栈
- 阅读笔记常见的设计模式之四:工厂模式