请求网络数据+++image-loader

/优先于所有页面(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();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值