主页面
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了
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(); }