MHalper页面
public class MHalper extends SQLiteOpenHelper{
//构造器 建立数据库 public MHalper(Context context) { super(context, "lianxi3", null, 1); } //建表 @Override public void onCreate(SQLiteDatabase sqLiteDatabase) { sqLiteDatabase.execSQL("create table json3(id integer primary key autoincrement,url text not null,json text not null )"); } @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { } }
---------------------------------------------------------------------------------------
JsonDao页面
public class JsonDao { private final MHalper mHalper; private SQLiteDatabase db; //构造器 public JsonDao(Context context){ mHalper = new MHalper(context); }
//添加进数据库 public void insertData(String url,String json){ db = mHalper.getWritableDatabase();
//先删除 再添加 db.delete("json3","url=?",new String[]{json}); ContentValues values = new ContentValues(); values.put("url",url); values.put("json",json); db.insert("json3",null,values); }
//查找 public String queryData(String url){ String json=""; SQLiteDatabase db = mHalper.getWritableDatabase(); Cursor cursor = db.query("json3", null, "url=?", new String[]{url}, null, null, null); while (cursor.moveToNext()){ json=cursor.getString(cursor.getColumnIndex("json")); } return json; } }
---------------------------------------------------------------------------------------------------------------------------------
MApp页面
public class MApp extends Application{ @Override public void onCreate() { super.onCreate(); ImageLoaderConfiguration build = new ImageLoaderConfiguration.Builder(this).build(); ImageLoader.getInstance().init(build); } }---------------------------------------------------------------------------------------------------------------------------------
public class ImageLoaderUtils { public static DisplayImageOptions getDisplayImageOption(){ DisplayImageOptions options = new DisplayImageOptions.Builder() .cacheInMemory(true)//设置下载的图片是否缓存在内存中 .cacheOnDisk(true) .considerExifParams(true) //是否考虑JPEG图像EXIF参数(旋转,翻转) .imageScaleType(ImageScaleType.EXACTLY_STRETCHED)//设置图片以如何的编码方式显示 .bitmapConfig(Bitmap.Config.RGB_565)//设置图片的解码类型// .displayer(new RoundedBitmapDisplayer(5))//是否设置为圆角,弧度为多少 // .displayer(new FadeInBitmapDisplayer(100))//是否图片加载好后渐入的动画时间 .build();//构建完成 return options; } }----------------------------------------------------------------------------------------------------------------------------------
MainActivity 页面
public class MainActivity extends AppCompatActivity { String baseUrl="http://www.93.gov.cn/93app/data.do?channelId=0&startNum="; private PullToRefreshListView plv; private MAdapter mAdapter; List<Prodct.DataBean> list =new ArrayList<>(); private ViewHolder holder; int pager=0; private JsonDao jsonDao; @SuppressLint("HandlerLeak") Handler handler=new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); if(msg.what==0){ String ss=(String)msg.obj; jsonDao.insertData(baseUrl+pager,ss); Gson gson = new Gson(); Prodct prodct = gson.fromJson(ss, Prodct.class); List<Prodct.DataBean> data = prodct.getData(); list.addAll(data); mAdapter.notifyDataSetChanged(); plv.onRefreshComplete(); } } }; private ImageLoader instance; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); plv = (PullToRefreshListView) findViewById(R.id.plv); //创建适配器 mAdapter = new MAdapter();
//调用适配器 plv.setAdapter(mAdapter); jsonDao = new JsonDao(MainActivity.this); instance = ImageLoader.getInstance();
//设置plv控件模式 plv.setMode(PullToRefreshBase.Mode.BOTH);
//得到数据
getNetData(0);
//plv监听 plv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() { @Override public void onPullDownToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) { list.clear(); getNetData(pager); } @Override public void onPullUpToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) { pager++; getNetData(pager); } }); } //得到数据的方法 private void getNetData(int pager) { if(NetStateUtil.isConn(MainActivity.this)){ final String urlString=baseUrl+pager; new Thread(){ @Override public void run() { super.run(); String netJson = NetUtil.getNetJson(urlString); Message message = new Message(); message.what=0; message.obj=netJson; handler.sendMessage(message); } }.start(); }else{ Toast.makeText(this, "没网络啦,请检查一下", Toast.LENGTH_SHORT).show(); String s = jsonDao.queryData(baseUrl + pager); if(!s.isEmpty()){ Gson gson = new Gson(); Prodct prodct = gson.fromJson(s, Prodct.class); List<Prodct.DataBean> data = prodct.getData(); list.addAll(data); mAdapter.notifyDataSetChanged(); plv.onRefreshComplete(); } } } //适配器 private class MAdapter extends BaseAdapter{ @Override public int getCount() { return list.size(); } @Override public Object getItem(int i) { return list.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { if(view==null){ holder = new ViewHolder(); view=View.inflate(MainActivity.this,R.layout.item,null); holder.imageView = view.findViewById(R.id.image); holder.textView=view.findViewById(R.id.text); view.setTag(holder); }else{ holder=(ViewHolder) view.getTag(); } DisplayImageOptions option = ImageLoaderUtils.getDisplayImageOption(); instance.displayImage(list.get(i).getIMAGEURL(),holder.imageView,option); holder.textView.setText(list.get(i).getTITLE()); return view; } } class ViewHolder{ ImageView imageView; TextView textView; } }