Http请求解析Json与图片(AlertDialog)提示框
2017-08-09 14:31
323 查看
public class HttpActivity extends AppCompatActivity { private ListView lv; List<Da.ResultBean.ListBean> list; private MyHttpSqlite sqlite; private MyAdapter adapter; private Bitmap bit; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_http); lv = (ListView) findViewById(R.id.lv); list = new ArrayList<Da.ResultBean.ListBean>(); // 实例化工具类 sqlite = new MyHttpSqlite(this); // 异步任务 new AsyncTask<String, Integer, String>() { @Override protected void onPostExecute(String s) { // 设置适配器 adapter = new MyAdapter(); lv.setAdapter(adapter); super.onPostExecute(s); } @Override protected String doInBackground(String... strings) { // 方法 getData(); return null; } }.execute(); // 点击弹出AlertDialog删除 lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, final int i, long l) { AlertDialog.Builder builder = new AlertDialog.Builder(HttpActivity.this); builder.setTitle("警告!"); builder.setMessage("确定删除吗?"); builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int j) { delete(list.get(i).getTitle()); Toast.makeText(HttpActivity.this, list.get(i).getTitle() + "已删除", Toast.LENGTH_SHORT).show(); list.remove(i); adapter.notifyDataSetChanged(); } }); builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { Toast.makeText(HttpActivity.this, "取消", Toast.LENGTH_SHORT).show(); } }); builder.show(); } }); } // 删除的方法 private void delete(String title) { SQLiteDatabase db = sqlite.getWritableDatabase(); db.delete("hu", " title = ?", new String[]{title}); db.close(); } private void getData() { // 请求网络资源并解析 try { URL url = new URL("http://169.254.19.1:8080/huhu/weixin.txt"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setConnectTimeout(5000); conn.setReadTimeout(5000); conn.setRequestMethod("GET"); int code = conn.getResponseCode(); if (code == 200) { Gson gson = new Gson(); Da da = gson.fromJson(new InputStreamReader(conn.getInputStream(), "UTF-8"), Da.class); list = da.getResult().getList(); add(list); } } catch (Exception e) { e.printStackTrace(); } } // 把解析的添加到数据库 public void add(List<Da.ResultBean.ListBean> list) { SQLiteDatabase db = sqlite.getWritableDatabase(); for (int i = 0; i < list.size(); i++) { ContentValues valuses = new ContentValues(); valuses.put("id", list.get(i).getId()); valuses.put("title", list.get(i).getTitle()); valuses.put("source", list.get(i).getSource()); valuses.put("firstImg", list.get(i).getFirstImg()); valuses.put("url", list.get(i).getUrl()); db.insert("hu", null, valuses); db.close(); } } 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(final int i, View view, ViewGroup viewGroup) { final ViewHolder holder; // 优化 if (view == null) { holder = new ViewHolder(); view = View.inflate(HttpActivity.this, R.layout.sw_item, null); holder.tv_id = view.findViewById(R.id.tv_id); holder.tv_title = view.findViewById(R.id.tv_title); holder.tv_source = view.findViewById(R.id.tv_source); holder.iv = view.findViewById(R.id.iv_firstImg); holder.tv_url = view.findViewById(R.id.tv_url); view.setTag(holder); } else { holder = (ViewHolder) view.getTag(); } holder.tv_id.setText(list.get(i).getId()); holder.tv_title.setText(list.get(i).getTitle()); holder.tv_source.setText(list.get(i).getSource()); new Thread(new Runnable() { @Override public void run() { final Bitmap image = getImage(list.get(i).getFirstImg()); runOnUiThread(new Runnable() { @Override public void run() { holder.iv.setImageBitmap(image); } }); } }) { }.start(); holder.tv_url.setText(list.get(i).getUrl()); return view; } } // 获取网络图片 private Bitmap getImage(String path) { try { URL url = new URL(path); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); int code = conn.getResponseCode(); if (code == 200) { // 因为该地址是一个图片的地址,所以返回的数据流就是一个图片的数据流 // 直接用该图片的数据流 转换成 一个Bitmap bit = BitmapFactory.decodeStream(conn.getInputStream()); } } catch (Exception e) { e.printStackTrace(); } return bit; } class ViewHolder { TextView tv_id, tv_title, tv_source, tv_firstImg, tv_url; ImageView iv; } }
相关文章推荐
- Http请求解析Json与图片(AlertDialog)提示框
- 使用apache的httpclient发送post请求传送和解析json
- Netty学习笔记之一(Netty解析简单的Http Post Json 请求)
- 网络请求图片和json解析,在listView中展示出来
- JAVA 请求http接口返回json数据解析
- HTTP请求数据返回解析Josn org.codehaus.jackson.map.JsonMappingException的解决方法
- http get/post请求及json解析
- Python发送http请求解析返回json小demo
- HttpClient请求数据(GET)并用JSON解析数据(一)
- Jmeter中通过beanshell脚本解析HTTP请求的返回的json并作为下个请求的输入参数
- 关于java 发送http json数据格式请求时,服务器端如何接收json数据并解析
- Android 用Json解析请求图片写的一个ViewPager广告轮播、带滑动小圆点
- android通过httpClient请求获取JSON数据并且解析
- android通过httpClient请求获取JSON数据并且解析
- 安卓POST请求+异步获取数据+JSON解析+图片解析
- java http 发请求,结果转jsonobject解析
- AsyncHttpClient 网络请求+ fastJson解析数据
- AndroidAsyncHttp与Gson或者Json组合使用,请求直接返回解析对象
- 爬虫之爬取知乎下某个问题下的全部图片(处理AJAX请求,解析json数据)
- python http请求post参数,json解析