Json解析Handler+异步文字+异步图片
2017-12-29 10:29
351 查看
注册页面
public class MainActivity extends AppCompatActivity { private EditText num; private EditText pwd; private Button register; private String password; private String mobile; private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { Bean bean = (Bean) msg.obj; String beanMsg = bean.getMsg(); tusi.setText(beanMsg); if (beanMsg.equals("注册成功")){ Intent intent = new Intent(MainActivity.this,Two_Activity.class); startActivity(intent); } } }; private TextView tusi; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //获取资源id num = findViewById(R.id.num); pwd = findViewById(R.id.pwd); register = findViewById(R.id.register); tusi = findViewById(R.id.tusi); //按钮的点击事件 register.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //获取EditText控件里的内容 mobile = num.getText().toString(); password = pwd.getText().toString(); //开启线程 new Thread(){ @Override public void run() { requestData(); } }.start(); } }); } private void requestData() { try { URL url = new URL("http://120.27.23.105/user/reg?mobile="+mobile+"&password="+password+""); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setRequestMethod("GET"); urlConnection.setReadTimeout(5000); urlConnection.setConnectTimeout(5000); if (urlConnection.getResponseCode() == 200){ InputStream inputStream = urlConnection.getInputStream(); String s = steamToString(inputStream); Gson gson = new Gson(); Bean bean = gson.fromJson(s, Bean.class); Message message = Message.obtain(); message.obj = bean; handler.sendMessage(message); } } catch (Exception e) { e.printStackTrace(); } } public String steamToString(InputStream inputStream){ StringBuilder builder = null; try { BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); String str; builder = new StringBuilder(); while ((str = reader.readLine()) != null){ builder.append(str); } } catch (IOException e) { e.printStackTrace(); } return builder.toString(); } }
public class Two_Activity extends AppCompatActivity {private ListView lv;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_two_);lv = findViewById(R.id.lv);//执行异步任务MyTask myTask = new MyTask();myTask.execute();}class MyTask extends AsyncTask<String,Void,String>{@Overrideprotected String doInBackground(String... strings) {try {URL url = new URL("http://120.27.23.105/product/getProducts?pscid=1&page=1&sort=0");HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();urlConnection.setRequestMethod("GET");urlConnection.setReadTimeout(5000);urlConnection.setConnectTimeout(5000);int responseCode = urlConnection.getResponseCode();if (responseCode == 200){InputStream inputStream = urlConnection.getInputStream();return streamToString(inputStream);}} catch (Exception e) {e.printStackTrace();}return null;}@Overrideprotected void onPostExecute(String s) {super.onPostExecute(s);Gson gson = new Gson();ListBean listBean = gson.fromJson(s, ListBean.class);MyAdapter myAdapter = new MyAdapter(Two_Activity.this,listBean.getData());lv.setAdapter(myAdapter);}public String streamToString(InputStream inputStream){StringBuilder builder = new StringBuilder();try {BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));String str;while ((str = reader.readLine()) != null){builder.append(str);}} catch (IOException e) {e.printStackTrace();}return builder.toString();}}
Adapter适配器页面
public class MyAdapter extends BaseAdapter {Context context;List<ListBean.DataBean> data;public MyAdapter(Context context,List<ListBean.DataBean> data) {this.context = context;this.data = data;}@Overridepublic int getCount() {return data.size();}@Overridepublic Object getItem(int i) {return data.get(i);}@Overridepublic long getItemId(int i) {return i;}@Overridepublic View getView(int i, View view, ViewGroup viewGroup) {ViewHolder holder;if (view == null){view = View.inflate(context,R.layout.lv_layout,null);holder = new ViewHolder();holder.img = view.findViewById(R.id.imageView);holder.textView = view.findViewById(R.id.textView);view.setTag(holder);}else {holder = (ViewHolder) view.getTag();}holder.textView.setText(data.get(i).getTitle());//holder.img.setImageBitmap();//异步获取图片MypicTask mypicTask = new MypicTask(holder.img);String[] split = data.get(i).getImages().split("\\|");mypicTask.execute(split[0]);return view;}private class ViewHolder{ImageView img;TextView textView;}class MypicTask extends AsyncTask<String,Void,Bitmap> {private ImageView img;public MypicTask(ImageView img) {this.img = img;}@Overrideprotected Bitmap doInBackground(String... strings) {try {URL url = new URL(strings[0]);HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();urlConnection.setRequestMethod("GET");urlConnection.setConnectTimeout(5000);urlConnection.setReadTimeout(5000);if (urlConnection.getResponseCode() == 200){InputStream inputStream = urlConnection.getInputStream();Bitmap bitmap = BitmapFactory.decodeStream(inputStream);return bitmap;}} catch (Exception e) {e.printStackTrace();}return null;}@Overrideprotected void onPostExecute(Bitmap bitmap) {super.onPostExecute(bitmap);//设置给控件进行展示img.setImageBitmap(bitmap);}}}
相关文章推荐
- Android异步加载访问网络图片-解析json
- android结合异步任务,动态加载图片,Json解析数据展示在ListView,并且实现按日期分类展示,借口回调
- 获取json解析 图片,文字+MyAsyncTask+ImagerLoader
- Android异步加载访问网络图片-解析json
- 使用ImageLoader获取图片,使用异步在网上请求json,然后解析,在listview中显示出来
- android豆瓣apiv2电影/音乐/书籍搜索及图片异步下载/json解析
- HttpClient解析json(涉及AsyncTas异步加载图片)
- 【Android学习笔记系列】AsyncTask、BaseAdapter整合异步加载用例(通过解析JSON格式数据加载网络图片内容)
- android通过json解析到的路径后异步加载网络图片
- 安卓POST请求+异步获取数据+JSON解析+图片解析
- POST解析(Imagerloader、异步、图片、文字、listv显示)
- 使用ListView和AsyncTask、fastjson解析Json以及适配器BaseAdapter来实现下载网络的图片以及文字并显示出来
- 解析json图片
- 图片框架 三重更新 联网解析json设置默认图片以及图片圆角弧度 储存到sd卡
- 【OSC手机App技术解析】- 列表异步线程加载图片
- BaseAdapter和ListView、异步下载,Json解析的简单运用(08)
- « AFNetworking 图片的本地缓存问题 Get application bundle seed ID in iOS » AFNetworking 使用总结 (用法+JSON解析)
- python3抓取异步百度瀑布流动态图片(二)get、json下载代码讲解
- Quartz2d从易到难全解析---绘制圆弧、圆、图片和文字
- jquery解析json异步功能树