//MainActivity
import android.os.AsyncTask; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.ListView; import com.google.gson.Gson; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; import java.util.List;
public class MainActivity extends AppCompatActivity { private MyAdapter adapter; private ListView lv; private List<Bean.DataBean.PcFeedFocusBean> list=new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lv = (ListView) findViewById(R.id.lv); new MyAsynTask().execute("https://www.toutiao.com/api/pc/focus/"); } class MyAsynTask extends AsyncTask<String,Void,String>{ String data=""; @Override protected String doInBackground(String... strings) { try { URL url=new URL(strings[0]); HttpURLConnection httpURLConnection= (HttpURLConnection) url.openConnection(); httpURLConnection.setRequestMethod("GET"); int code = httpURLConnection.getResponseCode(); if(code==200){ InputStream inputStream = httpURLConnection.getInputStream(); byte[] buffer = new byte[1024]; int length = 0; while((length = inputStream.read(buffer)) != -1){ String str = new String(buffer,0,length); data += str; } } } catch (Exception e) { e.printStackTrace(); } return data; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); Gson gson=new Gson(); Bean bean = gson.fromJson(s, Bean.class); list = bean.getData().getPc_feed_focus(); if (adapter == null) { adapter = new MyAdapter(list, MainActivity.this); lv.setAdapter(adapter); //lv.setAdapter(new MyAdapter(list,MainActivity.this)); } else { adapter.notifyDataSetChanged(); } } } }
//MyAdapter
import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import java.util.List;
public class MyAdapter extends BaseAdapter { List<Bean.DataBean.PcFeedFocusBean> list; Context context;private DisplayImageOptions options;public MyAdapter(List<Bean.DataBean.PcFeedFocusBean> list, Context context) { this.list = list; this.context = context;options=new DisplayImageOptions.Builder() .cacheInMemory(true)//使用内存缓存 .cacheOnDisk(true)//使用磁盘缓存 .showImageOnLoading(R.mipmap.ic_launcher)//设置正在下载的图片 .showImageForEmptyUri(R.mipmap.ic_launcher)//url为空或请求的资源不存在时 .showImageOnFail(R.mipmap.ic_launcher)//下载失败时显示的图片 .bitmapConfig(Bitmap.Config.RGB_565)//设置图片格式 .displayer(new RoundedBitmapDisplayer(20))//设置圆角图片 .build();
}@Override public int getCount() { return list.size(); } @Override public Object getItem(int i) { return list.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { ViewHolder vh; if(view==null){ vh = new ViewHolder(); view = View.inflate(context, R.layout.item,null); vh.title=view.findViewById(R.id.title); vh.img=view.findViewById(R.id.img); view.setTag(vh); }else { vh =(ViewHolder) view.getTag(); } vh.title.setText(list.get(i).getTitle()); String image_url = list.get(i).getImage_url(); Log.e("xxx", image_url); ImageLoader.getInstance().displayImage("http:"+image_url,vh.img); return view; } class ViewHolder{ TextView title; ImageView img; } }
//MyApplication
(在清单文件中添加name属性:.MyApplication)
import android.app.Application; import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiscCache; import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; import java.io.File; public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); //sd卡上缓存目录-android指定的缓存路径 android/data/<package>/cache File cachefile=getExternalCacheDir(); //自定义的缓存路径 // File cachefile=new File(Environment.getExternalStorageDirectory().getPath()+"/abc/a"); //进行框架初使化操作-全局配置 ImageLoaderConfiguration configuration=new ImageLoaderConfiguration.Builder(this) .memoryCacheExtraOptions(480, 800)//缓存图片最大的长和宽 .threadPoolSize(2)//线程池的数量 .threadPriority(4) .memoryCacheSize(5*1024*1024)//设置内存缓存区大小 .diskCacheSize(20*1024*1024)//设置sd卡缓存区大小 .diskCache(new UnlimitedDiscCache(cachefile))//自定义磁盘缓存目录 .writeDebugLogs()//打印日志内容 .diskCacheFileNameGenerator(new Md5FileNameGenerator())//给缓存的文件名进行md5加密处理 .build(); ImageLoader.getInstance().init(configuration); } }