定义一个接口
import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.AsyncTask; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; public class Demo extends AsyncTask<String,Void,Bitmap> { private Listener listener; public Demo(Listener listener){ this.listener = listener; } public interface Listener{ void pic(Bitmap bitmap); } @Override protected void onPostExecute(Bitmap bitmap) { super.onPostExecute(bitmap); listener.pic(bitmap); } @Override protected Bitmap doInBackground(String... params) { try { String path = params[0]; URL url = new URL(path); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setConnectTimeout(5000); connection.setReadTimeout(5000); int code = connection.getResponseCode(); if(code == HttpURLConnection.HTTP_OK){ InputStream is = connection.getInputStream(); return BitmapFactory.decodeStream(is); } } catch (Exception e) { e.printStackTrace(); } return null; } }主界面
import android.os.AsyncTask; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import com.bwie.listview.Bean.Bean; import com.bwie.listview.Utils.Utils; import com.google.gson.Gson; import com.limxing.xlistview.view.XListView; import java.io.InputStream; import java.io.UTFDataFormatException; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.util.List; public class MainActivity extends AppCompatActivity { private XListView xListView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); xListView = (XListView) findViewById(R.id.xlistview); qingqiu("http://japi.juhe.cn/health_knowledge/infoList?key=d2e173f79187d521231467d23c7dfb81"); } private void qingqiu(String path) { new AsyncTask<String,Void,String>(){ @Override protected void onPostExecute(String s) { super.onPostExecute(s); if(s != null){ Gson gson = new Gson(); Bean bean = gson.fromJson(s, Bean.class); List<Bean.ResultBean.DataBean> list = bean.getResult().getData(); xListView.setAdapter(new MyAdapter(MainActivity.this,list)); } } @Override protected String doInBackground(String... params) { try { String path = params[0]; URL url = new URL(path); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setConnectTimeout(5000); connection.setReadTimeout(5000); int code = connection.getResponseCode(); if(code == HttpURLConnection.HTTP_OK){ InputStream is = connection.getInputStream(); String json = Utils.read(is); return json; } } catch (Exception e) { e.printStackTrace(); } return null; } }.execute(path); } }适配器
import android.content.Context; import android.graphics.Bitmap; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import com.bwie.listview.Bean.Bean; import com.nostra13.universalimageloader.core.ImageLoader; import java.util.List; public class MyAdapter extends BaseAdapter { private List<Bean.ResultBean.DataBean> list; private Context context; public MyAdapter(Context context,List<Bean.ResultBean.DataBean> list){ this.context=context; this.list=list; } @Override public int getCount() { return list != null?list.size():0; } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; if(convertView == null){ holder = new ViewHolder(); convertView = View.inflate(context,R.layout.item,null); holder.tupian = (ImageView) convertView.findViewById(R.id.tupian); holder.wenzi = (TextView) convertView.findViewById(R.id.wenzi); convertView.setTag(holder); }else{ holder = (ViewHolder) convertView.getTag(); } holder.wenzi.setText(list.get(position).getTitle()); holder.tupian.setTag(list.get(position).getImg()); jiazai(list.get(position).getImg(),holder.tupian); holder.tupian.setImageResource(R.mipmap.ic_launcher_round); return convertView; } private void jiazai(final String path,final ImageView tupian) { new Demo(new Demo.Listener(){ @Override public void pic(Bitmap bitmap) { if(bitmap != null){ if(tupian.getTag() != null && path.equals(tupian.getTag())){ tupian.setImageBitmap(bitmap); } }else{ tupian.setImageResource(R.mipmap.ic_launcher); } } }).execute(path); } class ViewHolder{ ImageView tupian; TextView wenzi; } }