Http请求解析Json与图片(AlertDialog)提示框
2017-08-09 22:12
411 查看
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)提示框
- xml解析,httputils网络请求,imageloder图片加载
- C# HttpWebRequest\HttpWebResponse\WebClient发送请求解析json数据
- python http请求post参数,json解析
- android通过httpClient请求获取JSON数据并且解析
- HttpURLConnection请求数据(GET)并用JSON解析数据(二)
- android通过httpClient请求获取JSON数据并且解析
- ym——Android从零开始(16)(HTTP协议请求、获取图片、json数据)(新)
- 爬虫之爬取知乎下某个问题下的全部图片(处理AJAX请求,解析json数据)
- 使用apache的httpclient发送post请求传送和解析json
- iOS开发 - 第04篇 - 网络 - 02 - JSON解析 & 请求 & 黑酷例子 & HTTP通信
- Python发送http请求解析返回json小demo
- android通过httpClient请求获取JSON数据并且解析
- HttpClient请求返回JSON、图片
- AndroidAsyncHttp与Gson或者Json组合使用,请求直接返回解析对象
- AsyncHttpClient 网络请求+ fastJson解析数据
- android通过httpClient请求获取JSON数据并且解析
- android通过httpClient请求获取JSON数据并且解析
- http请求返回并解析json数据
- Jmeter中通过beanshell脚本解析HTTP请求的返回的json并作为下个请求的输入参数