1.AsyncTask+HttpURLConntion
public class Main2Activity extends AppCompatActivity {
private List<MyGson.DataBean.ListBean> list1 = new ArrayList<>();
// private GridView gridView;
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
List<MyGson.DataBean.ListBean> list2= (List<MyGson.DataBean.ListBean>) msg.obj;
//GAdapter adapter = new GAdapter(Main2Activity.this,list2);
//gridView.setAdapter(adapter);
ExAdapter adapter = new ExAdapter(Main2Activity.this,list,list2);
listView.setAdapter(adapter);
}
};
private String cid;
private ExpandableListView listView;
private List<MyGson.DataBean> list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
listView = findViewById(R.id.exlistview);
//gridView = findViewById(R.id.glist);
Intent intent = getIntent();
cid = intent.getStringExtra("cid");
new Thread(){
@Override
public void run() {
HttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet("https://www.zhaoapi.cn/product/getProductCatagory?cid="+ cid);
try {
HttpResponse execute = httpClient.execute(httpGet);
int statusCode = execute.getStatusLine().getStatusCode();
if (statusCode==200){
HttpEntity entity = execute.getEntity();
String s = EntityUtils.toString(entity);
Gson gson = new Gson();
MyGson myGson = gson.fromJson(s, MyGson.class);
list = myGson.getData();
for (int i = 0; i < list.size(); i++) {
list1 = list.get(i).getList();
}
Message msg = Message.obtain();
msg.obj=list1;
handler.sendMessage(msg);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
}
}
//在清单文件中加访问网络的权限
<uses-permission android:name="android.permission.INTERNET"/>android { compileSdkVersion 26 useLibrary 'org.apache.http.legacy' //用HttpClient时在Gradle Scripts下添加依赖,在libs下添加GSON架包 defaultConfig { applicationId "com.example.com.zuoye" minSdkVersion 15 targetSdkVersion 26 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" }2.Thread+HttpClient+handler
public class Main2Activity extends AppCompatActivity {
private List<MyGson.DataBean.ListBean> list1 = new ArrayList<>();
// private GridView gridView;
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
List<MyGson.DataBean.ListBean> list2= (List<MyGson.DataBean.ListBean>) msg.obj;
//GAdapter adapter = new GAdapter(Main2Activity.this,list2);
//gridView.setAdapter(adapter);
ExAdapter adapter = new ExAdapter(Main2Activity.this,list,list2);
listView.setAdapter(adapter);
}
};
private String cid;
private ExpandableListView listView;
private List<MyGson.DataBean> list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
listView = findViewById(R.id.exlistview);
//gridView = findViewById(R.id.glist);
Intent intent = getIntent();
cid = intent.getStringExtra("cid");
new Thread(){
@Override
public void run() {
HttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet("https://www.zhaoapi.cn/product/getProductCatagory?cid="+ cid);
try {
HttpResponse execute = httpClient.execute(httpGet);
int statusCode = execute.getStatusLine().getStatusCode();
if (statusCode==200){
HttpEntity entity = execute.getEntity();
String s = EntityUtils.toString(entity);
Gson gson = new Gson();
MyGson myGson = gson.fromJson(s, MyGson.class);
list = myGson.getData();
for (int i = 0; i < list.size(); i++) {
list1 = list.get(i).getList();
}
Message msg = Message.obtain();
msg.obj=list1;
handler.sendMessage(msg);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
}
}
//在适配器中展示图片@Override public View getView(int i, View view, ViewGroup viewGroup) { ViewHolder holder; if(view==null){ view=View.inflate(context,R.layout.list_layout,null); holder=new ViewHolder(); holder.msge=view.findViewById(R.id.img); holder.text01=view.findViewById(R.id.textView2); holder.text02=view.findViewById(R.id.textView3); view.setTag(holder); }else{ holder=(ViewHolder)view.getTag(); } //图片分割 holder.text01.setText(list.get(i).getCreatetime()); holder.text02.setText(list.get(i).getTitle()); MyTask myTask=new MyTask(holder.msge);//不分割:myTask.execute(list.get(i).getImage());
String images = list.get(i).getImages(); String[] split = images.split("\\|"); myTask.execute(split[0]); return view; } private class ViewHolder{ ImageView msge; TextView text01; TextView text02; } class MyTask extends AsyncTask<String,Void,Bitmap>{ ImageView imageView; private MyTask(ImageView imageView){ this.imageView=imageView; } @Override protected Bitmap doInBackground(String... strings) { //创建 try { URL url=new URL(strings[0]); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setConnectTimeout(5000); urlConnection.setReadTimeout(5000); urlConnection.setRequestMethod("GET"); int responseCode = urlConnection.getResponseCode(); if(responseCode==200) { InputStream inputStream = urlConnection.getInputStream(); Bitmap bitmap = BitmapFactory.decodeStream(inputStream); return bitmap; } } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(Bitmap bitmap) { super.onPostExecute(bitmap); if(bitmap!=null){ imageView.setImageBitmap(bitmap); } } }}
本文介绍了一种在Android应用中使用Thread与HttpClient发起网络请求的方法,并通过Handler更新UI线程,展示了如何解析JSON数据及使用AsyncTask异步任务加载图片。

261

被折叠的 条评论
为什么被折叠?



