AsyncTask
来源:互联网 发布:仙剑4for mac打不开 编辑:程序博客网 时间:2024/05/28 23:10
AsyncTask
import android.graphics.Bitmap;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import com.google.gson.Gson;
import java.util.ArrayList;
import java.util.List;
/**
* ctrl+o 重写方法
*/
public class MainActivity extends AppCompatActivity {
public String urlString = "http://api.expoon.com/AppNews/getNewsList/type/1/p/1";
String urlBitmap = "http://img.my.csdn.net/uploads/201407/26/1406383265_8550.jpg";
private ListView listView;
ArrayList<Product.DataBean> dataBeanList = new ArrayList();
private MAdapter mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView) findViewById(R.id.lv);
//直接调用asyncTask类请求网络,把url传进去
mAdapter = new MAdapter();
listView.setAdapter(mAdapter);
//这行代码要在主线程调用;
new MAsyncTask().execute(urlString);
}
/**
* 泛型 第一个参数:传过来的url
* 第二个参数 :进度
* 第三个参数 :接口请求成功返回的东西(json,bitmap)
*/
private class MAsyncTask extends AsyncTask<String, Void, String> {
/**
* 这个方法在子线程,在这个方法里进行联网操作
*
* @param strings 可变参数,底层是数组,里面放的是传过来的参数;
* @return
*/
@Override
protected String doInBackground(String... strings) {
String urlTemp = strings[0];
//直接用工具类获取json
String netJson = NetUtil.getNetJson(urlTemp);
return netJson; //返回给(前台方法,主线程方法onPostExecute)
}
/**
* 这个方法在主线程, 直接更新ui即可;
*
* @param s s是doInBackground请求接口成功后返回的json
*/
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Log.e("wzq", "onPostExecute: " + s);
//解析s, 直接给控件展示;
Gson gson = new Gson();
Product product = gson.fromJson(s, Product.class);
//把一个集合的数据放入另一个集合
List<Product.DataBean> temp = product.getData();
dataBeanList.addAll(temp);
mAdapter.notifyDataSetChanged();
}
}
private class MAdapter extends BaseAdapter {
@Override
public int getCount() {
Log.e("wzq", "getCount:" + dataBeanList.size());
return dataBeanList.size();
}
@Override
public Object getItem(int i) {
return dataBeanList.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
View view1 = View.inflate(MainActivity.this, R.layout.item02, null);
TextView tv_name = view1.findViewById(R.id.tv_name);
ImageView iv = view1.findViewById(R.id.iv);
tv_name.setText(dataBeanList.get(i).getNews_summary());
new MBitMapAsyncTask(iv).execute(urlBitmap);
Log.e("wzq", "getCount:" + "执行getview");
return view1;
}
}
private class MBitMapAsyncTask extends AsyncTask<String,Void,Bitmap>{
private ImageView iv;
public MBitMapAsyncTask(ImageView iv) {
this.iv = iv;
}
@Override
protected Bitmap doInBackground(String... strings) {
return NetUtil.getNetBitmap(strings[0]);
}
@Override
protected void onPostExecute(Bitmap bitmap) {
super.onPostExecute(bitmap);
iv.setImageBitmap(bitmap);
}
}
}
- AsyncTask
- ASyncTask
- AsyncTask
- AsyncTask
- AsyncTask
- AsyncTask
- AsyncTask
- AsyncTask
- AsyncTask
- AsyncTask
- AsyncTask
- AsyncTask
- AsyncTask
- AsyncTask
- AsyncTask
- AsyncTask
- AsyncTask
- AsyncTask
- 关于Android系统软键盘
- UI控件 -> Button
- Python基础入门之条件判断和循环二
- Bilibili 移动端组件化实践中的冷启动优化
- Android 工具合集网站
- AsyncTask
- jQuery遍历-同胞
- TP FP TN FN
- VTK系统基础概念一
- LeetCode.299 Bulls and Cows
- 关于数据库的增删查改
- #!/bin/sh与#!/bin/bash
- eventbus中handlerposter类进行分析
- R-CNN