解析网络图片
来源:互联网 发布:仿淘宝手机网站模板 编辑:程序博客网 时间:2024/06/05 19:11
package fragment.bwie.com.week3_demo;
import android.content.ContentValues;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.Toast;
import com.google.gson.Gson;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;
import fragment.bwie.com.week3_demo.db.MyHelper;
import fragment.bwie.com.week3_demo.xlist.XListView;
public class MainActivity extends AppCompatActivity {
private XListView listView;
//固定的网络请求URL固定部分
private static final String URL_HOST = "http://gank.io/api/history/content/";
private int limit = 5;//每页加载limit条数据;
private int page = 1;//加载当前的页码,请求第page页;
private MyAdapter adapter;
private SQLiteDatabase db;
private boolean tag = true;//代表是否是第一次请求数据;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//实例化db
MyHelper helper = new MyHelper(MainActivity.this);
db = helper.getWritableDatabase();
//初始化xlistview
listView = (XListView) findViewById(R.id.mylist);
adapter = new MyAdapter(MainActivity.this);
listView.setAdapter(adapter);
//给listview设置上拉加载更多
listView.setPullLoadEnable(true);
listView.setPullRefreshEnable(true);
//设置上拉加载监听
listView.setXListViewListener(new XListView.IXListViewListener() {
@Override
public void onRefresh() {
//刷新
page = 1;
addTask();
}
@Override
public void onLoadMore() {
//加载更多,请求第page++页数据;
page++;
addTask();
}
});
//请求第一页数据;
addTask();
}
//启动异步任务;
private void addTask() {
MyTask task = new MyTask();
task.execute("");
}
class MyTask extends AsyncTask<String, Integer, String> {
@Override
protected String doInBackground(String... strings) {
//网络请求
return getDataFromHttp();
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
if (s != null && !s.equals("")) {
//解析从网络获取的数据
Gson gson = new Gson();
DataBean bean = gson.fromJson(s, DataBean.class);
if (bean != null) {
List<DataBean.ResultBean> resultBeen = bean.results;
if (resultBeen != null && resultBeen.size() > 0) {
//加载到listview上显示;
if (page > 1) {
adapter.addData(resultBeen);
//上拉加载更多时,将数据添加入数据库中;
addDb(resultBeen);
} else {
adapter.updateData(resultBeen);
// page==1时或者是第一次获取数据;或者是下拉刷新;只有在第一次获取数据时需要添加数据库
if(tag){
addDb(resultBeen);
tag=false;
}
}
listView.stopLoadMore();
listView.stopRefresh();
} else {
Toast.makeText(MainActivity.this, "返回数据列表为空!", Toast.LENGTH_LONG).show();
}
} else {
Toast.makeText(MainActivity.this, "数据解析失败!", Toast.LENGTH_LONG).show();
}
} else {
Toast.makeText(MainActivity.this, "网络获取数据失败!", Toast.LENGTH_LONG).show();
}
}
}
private String getDataFromHttp() {
try {
String path = URL_HOST + limit + "/" + page;
URL url = new URL(path);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
int code = connection.getResponseCode();
if (code == 200) {
InputStream is = connection.getInputStream();
String str = "";
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder builder = new StringBuilder();
while ((str = reader.readLine()) != null) {
builder.append(str);
}
is.close();
reader.close();
System.out.println("page=" + page + " " + builder.toString());
return builder.toString();
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
//将从网络获取的数据添加到数据库中;
private void addDb(List<DataBean.ResultBean> list) {
for (int i = 0; i < list.size(); i++) {
ContentValues values = new ContentValues();
values.put("title", list.get(i).title);
values.put("content", list.get(i).content);
db.insert("week3", null, values);
}
}
}
------------------------------------------------------
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.widget.BaseAdapter;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
public class MyAdapter extends BaseAdapter {
private List<DataBean.ResultBean> list=new ArrayList<>();
private Context context;
public MyAdapter(Context context){
this.context=context;
}
public void addData(List<DataBean.ResultBean> list){
//将传进来的数组添加进adapter;
this.list.addAll(list);
notifyDataSetChanged();
}
//刷新数据;首先清空旧数据,再添加新数据
public void updateData(List<DataBean.ResultBean> list){
this.list.clear();
addData(list);
}
@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=null;
if(view==null){
view=View.inflate(context, R.layout.item,null);
holder=new ViewHolder();
holder.title=(TextView)view.findViewById(R.id.item_title);
holder.webView=(WebView)view.findViewById(R.id.item_web);
view.setTag(holder);
}else
{
holder=(ViewHolder)view.getTag();
}
DataBean.ResultBean resultBean=list.get(i);
if(resultBean.title!=null){
holder.title.setText(resultBean.title);
}
holder.webView.setVisibility(View.GONE);
// if(resultBean.content!=null){
// //将HTML代码设置给webview;
// holder.webView.loadDataWithBaseURL("","<html><head><style>img{width:100%;}</style></head><body>"+resultBean.content+"</body></html>","text/html","utf-8",null);
// // holder.webView.loadDataWithBaseURL("",resultBean.content,"text/html","utf-8",null);
// WebSettings settings=holder.webView.getSettings();
// settings.setJavaScriptCanOpenWindowsAutomatically(true);
// settings.setJavaScriptEnabled(true);
// holder.webView.setWebChromeClient(new WebChromeClient());
// }
return view;
}
class ViewHolder {
public TextView title;
public WebView webView;
}
}
------------------------------------------------
xlist 文件夹
-----------------
Bean 类
import android.content.ContentValues;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.Toast;
import com.google.gson.Gson;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;
import fragment.bwie.com.week3_demo.db.MyHelper;
import fragment.bwie.com.week3_demo.xlist.XListView;
public class MainActivity extends AppCompatActivity {
private XListView listView;
//固定的网络请求URL固定部分
private static final String URL_HOST = "http://gank.io/api/history/content/";
private int limit = 5;//每页加载limit条数据;
private int page = 1;//加载当前的页码,请求第page页;
private MyAdapter adapter;
private SQLiteDatabase db;
private boolean tag = true;//代表是否是第一次请求数据;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//实例化db
MyHelper helper = new MyHelper(MainActivity.this);
db = helper.getWritableDatabase();
//初始化xlistview
listView = (XListView) findViewById(R.id.mylist);
adapter = new MyAdapter(MainActivity.this);
listView.setAdapter(adapter);
//给listview设置上拉加载更多
listView.setPullLoadEnable(true);
listView.setPullRefreshEnable(true);
//设置上拉加载监听
listView.setXListViewListener(new XListView.IXListViewListener() {
@Override
public void onRefresh() {
//刷新
page = 1;
addTask();
}
@Override
public void onLoadMore() {
//加载更多,请求第page++页数据;
page++;
addTask();
}
});
//请求第一页数据;
addTask();
}
//启动异步任务;
private void addTask() {
MyTask task = new MyTask();
task.execute("");
}
class MyTask extends AsyncTask<String, Integer, String> {
@Override
protected String doInBackground(String... strings) {
//网络请求
return getDataFromHttp();
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
if (s != null && !s.equals("")) {
//解析从网络获取的数据
Gson gson = new Gson();
DataBean bean = gson.fromJson(s, DataBean.class);
if (bean != null) {
List<DataBean.ResultBean> resultBeen = bean.results;
if (resultBeen != null && resultBeen.size() > 0) {
//加载到listview上显示;
if (page > 1) {
adapter.addData(resultBeen);
//上拉加载更多时,将数据添加入数据库中;
addDb(resultBeen);
} else {
adapter.updateData(resultBeen);
// page==1时或者是第一次获取数据;或者是下拉刷新;只有在第一次获取数据时需要添加数据库
if(tag){
addDb(resultBeen);
tag=false;
}
}
listView.stopLoadMore();
listView.stopRefresh();
} else {
Toast.makeText(MainActivity.this, "返回数据列表为空!", Toast.LENGTH_LONG).show();
}
} else {
Toast.makeText(MainActivity.this, "数据解析失败!", Toast.LENGTH_LONG).show();
}
} else {
Toast.makeText(MainActivity.this, "网络获取数据失败!", Toast.LENGTH_LONG).show();
}
}
}
private String getDataFromHttp() {
try {
String path = URL_HOST + limit + "/" + page;
URL url = new URL(path);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
int code = connection.getResponseCode();
if (code == 200) {
InputStream is = connection.getInputStream();
String str = "";
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder builder = new StringBuilder();
while ((str = reader.readLine()) != null) {
builder.append(str);
}
is.close();
reader.close();
System.out.println("page=" + page + " " + builder.toString());
return builder.toString();
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
//将从网络获取的数据添加到数据库中;
private void addDb(List<DataBean.ResultBean> list) {
for (int i = 0; i < list.size(); i++) {
ContentValues values = new ContentValues();
values.put("title", list.get(i).title);
values.put("content", list.get(i).content);
db.insert("week3", null, values);
}
}
}
------------------------------------------------------
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.widget.BaseAdapter;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
public class MyAdapter extends BaseAdapter {
private List<DataBean.ResultBean> list=new ArrayList<>();
private Context context;
public MyAdapter(Context context){
this.context=context;
}
public void addData(List<DataBean.ResultBean> list){
//将传进来的数组添加进adapter;
this.list.addAll(list);
notifyDataSetChanged();
}
//刷新数据;首先清空旧数据,再添加新数据
public void updateData(List<DataBean.ResultBean> list){
this.list.clear();
addData(list);
}
@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=null;
if(view==null){
view=View.inflate(context, R.layout.item,null);
holder=new ViewHolder();
holder.title=(TextView)view.findViewById(R.id.item_title);
holder.webView=(WebView)view.findViewById(R.id.item_web);
view.setTag(holder);
}else
{
holder=(ViewHolder)view.getTag();
}
DataBean.ResultBean resultBean=list.get(i);
if(resultBean.title!=null){
holder.title.setText(resultBean.title);
}
holder.webView.setVisibility(View.GONE);
// if(resultBean.content!=null){
// //将HTML代码设置给webview;
// holder.webView.loadDataWithBaseURL("","<html><head><style>img{width:100%;}</style></head><body>"+resultBean.content+"</body></html>","text/html","utf-8",null);
// // holder.webView.loadDataWithBaseURL("",resultBean.content,"text/html","utf-8",null);
// WebSettings settings=holder.webView.getSettings();
// settings.setJavaScriptCanOpenWindowsAutomatically(true);
// settings.setJavaScriptEnabled(true);
// holder.webView.setWebChromeClient(new WebChromeClient());
// }
return view;
}
class ViewHolder {
public TextView title;
public WebView webView;
}
}
------------------------------------------------
xlist 文件夹
-----------------
Bean 类
阅读全文
0 0
- 解析网络图片
- android ImageView解析网络图片
- 获取网络json解析中的图片
- 获取网络json解析中的图片
- Json解析网络获取Viewpager图片glide下载图片
- AspriseOCR破解用Java实现网络图片解析
- Android Volley完全解析(二),使用Volley加载网络图片
- 将网络解析的图片数组放入scrollview中
- Android Volley完全解析(二),使用Volley加载网络图片
- Android Volley完全解析(二),使用Volley加载网络图片
- Android Volley完全解析(二),使用Volley加载网络图片
- Android Volley完全解析(二),使用Volley加载网络图片
- Android Volley完全解析(二),使用Volley加载网络图片
- Android Volley完全解析(二),使用Volley加载网络图片
- Android Volley完全解析(二),使用Volley加载网络图片
- Android Volley完全解析(二),使用Volley加载网络图片
- Android解析获取网络上的图片(支持bmp格式)
- AspriseOCR破解用Java实现网络图片解析
- UUID生成工具
- 解决ios音乐不自动播放的问题
- TMA3.0.2.5铁塔制造助手+屏幕录像专家
- String的理解
- ReactNative开发(四)之小项目开发案例
- 解析网络图片
- 用Notepad++录制宏
- Banner 图片轮播
- Java集合源码分析→HashMap
- 分布式系统架构
- 顺序表
- 通过a标签给frame标签的src赋值
- exception = {"元数据集合中已存在具有标识“xxx”的项。\r\n参数名: item"}
- jQuery报错:Uncaught ReferenceError: $ is not defined