您的位置:首页 > Web前端 > JavaScript

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);}}}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  移动
相关文章推荐