package example.com.zhonghua.nets; import android.util.Log; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; /** * author:Created by niuyuejiao on 2018/4/2. * 请求网络数据 */ public class NetHttpUrl { //请求网络数据 public static String getHttpConn(String urlString){ try { URL url = new URL(urlString); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); int responseCode = urlConnection.getResponseCode(); if(responseCode==200){ InputStream inputStream = urlConnection.getInputStream(); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); StringBuilder stringBuilder = new StringBuilder(); String temp=""; while ((temp=bufferedReader.readLine())!=null){ stringBuilder.append(temp); } String s = stringBuilder.toString(); Log.d("sssssss",s); return s; } } catch (Exception e) { e.printStackTrace(); Log.d("sssssss","ddddd"); } return ""; } }
package example.com.zhonghua.nets; import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; /** * author:Created by niuyuejiao on 2018/4/2. * 判断网络状态 */ public class NetStates { //判断网络状态 public static int getType(Context context) { int states = -1; ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo info = manager.getActiveNetworkInfo(); if (info == null) { return states; } int type = info.getType(); if (type == manager.TYPE_MOBILE) { return 0; } if (type == manager.TYPE_WIFI) { return 1; } return states; } }
package example.com.zhonghua.untils; import android.graphics.Bitmap; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer; import example.com.zhonghua.R; /** * author:Created by niuyuejiao on 2018/4/2. * 图片参数配置 */ public class ImageLoaderUnttils { //图片参数配置 public static DisplayImageOptions getOptions(){ DisplayImageOptions options = new DisplayImageOptions.Builder() .showImageForEmptyUri(R.mipmap.ic_launcher) .showImageOnLoading(R.mipmap.ic_launcher) .showImageOnFail(R.mipmap.ic_launcher) .displayer(new RoundedBitmapDisplayer(25)) .bitmapConfig(Bitmap.Config.ARGB_8888) .cacheInMemory(true) .cacheOnDisk(true) .build(); return options; } }
package example.com.zhonghua.untils; import android.app.Application; import android.os.Environment; import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiskCache; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; import java.io.File; /** * imagel的全局配置 * author:Created by niuyuejiao on 2018/4/2. */ public class MyApp extends Application{ //imagel的全局配置 @Override public void onCreate() { super.onCreate(); File file=new File(Environment.getExternalStorageDirectory()+"/"+"image"); ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(this) .diskCache(new UnlimitedDiskCache(file)) .threadPoolSize(3) .build(); ImageLoader.getInstance().init(configuration); } }
package example.com.zhonghua.sqlite; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; /** * author:Created by niuyuejiao on 2018/4/2. * SQLite的帮助类 */ public class MyHelper extends SQLiteOpenHelper{ public MyHelper(Context context) { super(context, "User.db", null, 1); } @Override public void onCreate(SQLiteDatabase sqLiteDatabase) { sqLiteDatabase.execSQL("create table user(id integer primary key autoincrement,url text not null,json text not null)"); } @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { } }
package example.com.zhonghua.sqlite; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; /** * author:Created by niuyuejiao on 2018/4/2. * SQLite的dao类 */ public class UserDao { private final SQLiteDatabase rd; public UserDao(Context context) { MyHelper myHelper = new MyHelper(context); rd = myHelper.getReadableDatabase(); } //先删除再添加 public void insertData(String url, String json) { rd.delete("user", "url=?", new String[]{json}); ContentValues values = new ContentValues(); values.put("url", url); values.put("json", json); rd.insert("user", null, values); } //查询 public String queryData(String url) { String json = ""; Cursor cursor = rd.query("user", null, "url=?", new String[]{url}, null, null, null); while (cursor.moveToNext()) { json = cursor.getString(cursor.getColumnIndex("json")); } return json; } }
package example.com.zhonghua; import android.annotation.SuppressLint; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.handmark.pulltorefresh.library.PullToRefreshBase; import com.handmark.pulltorefresh.library.PullToRefreshListView; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import java.util.ArrayList; import java.util.List; import example.com.zhonghua.bean.DataBeans; import example.com.zhonghua.nets.NetHttpUrl; import example.com.zhonghua.nets.NetStates; import example.com.zhonghua.sqlite.UserDao; import example.com.zhonghua.untils.ImageLoaderUnttils; /* *主页面*/ public class MainActivity extends AppCompatActivity { private PullToRefreshListView ptr; List<DataBeans.DataBean> list = new ArrayList<DataBeans.DataBean>(); int page; private ImageLoader instance; static String urlString = "http://api.expoon.com/AppNews/getNewsList/type/1/p/"; @SuppressLint("HandlerLeak") private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); if (msg.what == 0) { //插入数据 String ss = (String) msg.obj; dao.insertData(urlString + page, ss); Gson gson = new GsonBuilder().create(); DataBeans dataBeans = gson.fromJson(ss, DataBeans.class); List<DataBeans.DataBean> data = dataBeans.getData(); list.addAll(data); //刷新适配器 adapter.notifyDataSetChanged(); //UI同步 ptr.onRefreshComplete(); } } }; private MyAdapter adapter; private UserDao dao; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //找控件 ptr = (PullToRefreshListView) findViewById(R.id.ptr); //设置模式 ptr.setMode(PullToRefreshBase.Mode.BOTH); dao = new UserDao(MainActivity.this); //设置适配器 adapter = new MyAdapter(); ptr.setAdapter(adapter); //获取数据 getDatas(0); //ImageLoader实体类 instance = ImageLoader.getInstance(); //刷新监听 ptr.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() { @Override public void onPullDownToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) { list.clear(); getDatas(0); } @Override public void onPullUpToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) { page++; getDatas(page); } }); } //数据.... private void getDatas(int page) { //数据接口 final String umrl = urlString + page; //判断网络 if (NetStates.getType(MainActivity.this) != -1) { Toast.makeText(MainActivity.this, "有网啦!", Toast.LENGTH_SHORT).show(); //子线程 new Thread() { @Override public void run() { super.run(); // 请求数据 String httpUrl = NetHttpUrl.getHttpConn(umrl); Message msg = new Message(); msg.what = 0; msg.obj = httpUrl; handler.sendMessage(msg); } }.start(); // new MyAsyncTask().execute(umrl); } else { Toast.makeText(MainActivity.this, "无网络,请重试!", Toast.LENGTH_SHORT).show(); //查询 String s = dao.queryData(umrl); if (!s.isEmpty()) { Gson gson = new GsonBuilder().create(); DataBeans dataBeans = gson.fromJson(s, DataBeans.class); List<DataBeans.DataBean> data = dataBeans.getData(); list.addAll(data); adapter.notifyDataSetChanged(); ptr.onRefreshComplete(); } } } //适配器... private class MyAdapter 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) { ViewHolder holder; if (view == null) { view = View.inflate(MainActivity.this, R.layout.holder, null); holder = new ViewHolder(); holder.name = view.findViewById(R.id.name); holder.img = view.findViewById(R.id.img); view.setTag(holder); } else { holder = (ViewHolder) view.getTag(); } //赋值 holder.name.setText(list.get(i).getNews_id()); DisplayImageOptions options = ImageLoaderUnttils.getOptions(); instance.displayImage(list.get(i).getPic_url(), holder.img, options); return view; } } class ViewHolder { private TextView name; private ImageView img; } }