/优先于所有页面(Activity)创建
//主要负责应用全局初始化
//该对象也是一个context
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
//ctrl + h 查看累的继承结构
//MemoryCache
//DiskCache
//FileNameGenerator
//怎么调用api
//要什么参数
//怎么给这个参数
//Builder
//构建模式
//链式调用
//全局配置
ImageLoaderConfiguration configuration = null;
DisplayImageOptions options = new DisplayImageOptions.Builder()
.build();
//try {
//
configuration = new ImageLoaderConfiguration.Builder(this)
//配置:内存 磁盘 缓存
//.memoryCache(new LruMemoryCache())
//.memoryCacheSize()
//内存缓存大小
.memoryCacheSizePercentage(10)
//配置磁盘缓存:目录 文件名生成 大小
//.diskCache(new LruDiskCache(getCacheDir(), new HashCodeFileNameGenerator(), 10*1024*1024))
.diskCacheSize(50*1024*1024)
//线程配置
//任务优先级配置
//FIFO
//加载图片1 2 3 4 5
//LIFO
//.tasksProcessingOrder(QueueProcessingType.)
//默认显示配置
//.defaultDisplayImageOptions(options)
.build();
//} catch (IOException e) {
// e.printStackTrace();
//}
//初始化:只有第一次初始化有效果
ImageLoader.getInstance().init(configuration);
//无效果
//ImageLoader.getInstance().init(null);
}
}
main
private ListView listview;
private NewAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listview = findViewById(R.id.listview);
adapter = new NewAdapter(this);
listview.setAdapter(adapter);
getinfo();
}
private String path = "http://api.expoon.com/AppNews/getNewsList/type/1/p/1";
@SuppressLint("StaticFieldLeak")
private void getinfo(){
new AsyncTask<String, Void, List<NewBean.Data>>() {
@Override
protected List<NewBean.Data> doInBackground(String... strings) {
NewBean bean= NetUtil.getloadmessage(strings[0], NewBean.class);
List<NewBean.Data> data = bean.getData();
return data;
}
@Override
protected void onPostExecute(List<NewBean.Data> data) {
super.onPostExecute(data);
adapter.setList(data);
}
}.execute(path);
}
}
Adapter适配器
public class NewAdapter extends BaseAdapter {
private List<NewBean.Data> list;
private Context context;
public NewAdapter(Context context) {
this.context = context;
list = new ArrayList<>();
}
public void setList(List<NewBean.Data> list) {
this.list = list;
notifyDataSetChanged();
}
@Override
public int getCount() {
return list.size();
}
@Override
public NewBean.Data 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;
if(convertView == null){
convertView = LayoutInflater.from(context).inflate(R.layout.item,parent,false);
holder = new ViewHolder();
holder.text1 = convertView.findViewById(R.id.text1);
holder.text2 = convertView.findViewById(R.id.text2);
holder.image = convertView.findViewById(R.id.imageView);
convertView.setTag(holder);
}else {
holder = (ViewHolder) convertView.getTag();
}
holder.text1.setText(list.get(position).getNews_title());
holder.text2.setText(list.get(position).getNews_summary());
ImageLoader instance = ImageLoader.getInstance();
instance.displayImage(getItem(position).getPic_url(),holder.image);
return convertView;
}
class ViewHolder{
TextView text1,text2;
ImageView image;
}
}
工具类
public class NetUtil {
public static <E> E getloadmessage(String myurl,Class clazz){
String getloadmessage = getloadmessage(myurl);
E e = (E) new Gson().fromJson(getloadmessage, clazz);
return e;
}
public static String getloadmessage(String myurl){
try {
URL url = new URL(myurl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setReadTimeout(5000);
connection.setConnectTimeout(5000);
int responseCode = connection.getResponseCode();
if(responseCode == 200){
String stream = stream(connection.getInputStream());
return stream;
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
public static String stream(InputStream is) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(is));
StringBuilder builder = new StringBuilder();
for (String tmp = br.readLine();tmp != null;tmp = br.readLine()){
builder.append(tmp);
}
return builder.toString();
}
}