imageLoader

//适配器

package com.example.wz.imageloaderdemo;

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.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;

import java.util.List;


public class MyAdapter extends BaseAdapter{
private Context context;
    private List<Data.DataBean.ArticleListBean> list;
    private int itemLayoutId;
    private ImageLoader imageLoader;
    private DisplayImageOptions options;
    public MyAdapter(Context context, List<Data.DataBean.ArticleListBean> list, int itemLayoutId) {
        this.context = context;
        this.list = list;
        this.itemLayoutId = itemLayoutId;

        //创建默认的ImageLoader配置参数
        ImageLoaderConfiguration configuration = ImageLoaderConfiguration
                .createDefault(context);

        //将configuration配置到imageloader中
        imageLoader=ImageLoader.getInstance();
        imageLoader.init(configuration);

        options=new DisplayImageOptions.Builder()
                .cacheInMemory(true)
                .cacheOnDisk(true)
                .bitmapConfig(Bitmap.Config.ARGB_8888)
                .showImageOnLoading(R.mipmap.ic_launcher)
                .showImageForEmptyUri(R.mipmap.ic_launcher)
                .showImageOnFail(R.mipmap.ic_launcher)
                .build();
    }

    @Override
    public int getCount() {
        return list.size();
    }

    @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){
            convertView=View.inflate(context,itemLayoutId,null);
            holder=new ViewHolder();
            holder.url= (TextView) convertView.findViewById(R.id.url);
            holder.image= (ImageView) convertView.findViewById(R.id.image);

            convertView.setTag(holder);
        }else{
            holder= (ViewHolder) convertView.getTag();
        }
        Data.DataBean.ArticleListBean bean=list.get(position);
        holder.url.setText(bean.getImgSrc());

        imageLoader.displayImage(bean.getImgSrc(),holder.image,options);
        return convertView;
    }

    class ViewHolder{
        TextView url;
        ImageView image;
    }
}


//网络请求

 package com.example.wz.imageloaderdemo;

import android.util.Log;

import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Map;

/**
 * 类描述:
 * 创建人:yekh
 * 创建时间:2017/6/16 11:27
 */
public class UrlUtils {
    /**
         * HttpURLConnection的post请求
         * @param urlPath
         * @param map
         * @return
         */
        public static String postUrlConnect(String urlPath, Map<String,Object> map){
           StringBuffer sbRequest =new StringBuffer();
            if(map!=null&&map.size()>0){
                for (String key:map.keySet()){
                    sbRequest.append(key+"="+map.get(key)+"&");
                }
            }
            String request = sbRequest.substring(0,sbRequest.length()-1);
            try {
                //创建URL
                URL url = new URL(urlPath);
                //由URL的openConnection方法得到一个HttpURLConnection(需要强转)
                HttpURLConnection httpURLConnection =
                        (HttpURLConnection) url.openConnection();
                //设置post提交
                httpURLConnection.setRequestMethod("POST");
                //设置超时时间
                httpURLConnection.setConnectTimeout(30000);
                httpURLConnection.setReadTimeout(30000);

                httpURLConnection.setDoInput(true);
                httpURLConnection.setDoOutput(true);

                //把请求正文通过OutputStream发出去
                OutputStream os =httpURLConnection.getOutputStream();
                os.write(request.getBytes());
                os.flush();

                //判断响应码  200 代表成功
                if(httpURLConnection.getResponseCode()==200){
                    //由HttpURLConnection拿到输入流
                    InputStream in=httpURLConnection.getInputStream();
                    StringBuffer sb=new StringBuffer();
                    //根据输入流做一些IO操作
                    byte [] buff =new byte[1024];
                    int len=-1;
                    while((len=in.read(buff))!=-1){
                        sb.append(new String(buff,0,len,"utf-8"));
                    }

                    in.close();
                    os.close();
                    httpURLConnection.disconnect();
                    return  sb.toString();
                }else{
                    return null;
                }

            }catch (Exception e){
                Log.e("post","code:"+e.getMessage());
                return null;
            }
        }

        /**
         * HttpURLConnection的get请求
         * @param urlPath
         * @return
         */
        public static String getUrlConnect(String urlPath){

            try {
                //创建URL
                URL url = new URL(urlPath);
                //由URL的openConnection方法得到一个HttpURLConnection(需要强转)
                HttpURLConnection httpURLConnection =
                        (HttpURLConnection) url.openConnection();
                //设置连接
                httpURLConnection.connect();
                //判断响应码  200 代表成功
                if(httpURLConnection.getResponseCode()==200){
                    //由HttpURLConnection拿到输入流
                    InputStream in=httpURLConnection.getInputStream();
                    StringBuffer sb=new StringBuffer();
                    //根据输入流做一些IO操作
                    byte [] buff =new byte[1024];
                    int len=-1;
                    while((len=in.read(buff))!=-1){
                        sb.append(new String(buff,0,len,"utf-8"));
                    }
                    in.close();
                    httpURLConnection.disconnect();
                    return  sb.toString();
                }else{
                    return null;
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }
}


//been

//package com.example.wz.imageloaderdemo;

import java.util.List;


public class Data {

 

    private DataBean data;
    private String errorCode;
    private boolean success;
    private String msg;

    public DataBean getData() {
        return data;
    }

    public void setData(DataBean data) {
        this.data = data;
    }

    public String getErrorCode() {
        return errorCode;
    }

    public void setErrorCode(String errorCode) {
        this.errorCode = errorCode;
    }

    public boolean isSuccess() {
        return success;
    }

    public void setSuccess(boolean success) {
        this.success = success;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public static class DataBean {
     
 
        private int size;
        private List<ArticleListBean> articleList;

        public int getSize() {
            return size;
        }

        public void setSize(int size) {
            this.size = size;
        }

        public List<ArticleListBean> getArticleList() {
            return articleList;
        }

        public void setArticleList(List<ArticleListBean> articleList) {
            this.articleList = articleList;
        }

        public static class ArticleListBean {
          
            private int _id;
            private int id;
            private String url;
            private String title;
            private String writer;
            private String category;
            private String keywords;
            private String description;
            private int thumbUp;
            private int thumbDown;
            private String content;
            private String tag;
            private long createTime;
            private String source;
            private String site;
            private int readed;
            private int comment;
            private int applaud;
            private String imgSrc;
            private String markTime;
            private double score;
            private double categoryScore;
            private boolean haveReaded;
            private int property;
            private Object time;
            private String tags;
            private Object typeMapList;
            private long recommend_time;
            private String first_image;
            private String tag_weight;
            private double site_weight;
            private String cate;

            public int get_id() {
                return _id;
            }

            public void set_id(int _id) {
                this._id = _id;
            }

            public int getId() {
                return id;
            }

            public void setId(int id) {
                this.id = id;
            }

            public String getUrl() {
                return url;
            }

            public void setUrl(String url) {
                this.url = url;
            }

            public String getTitle() {
                return title;
            }

            public void setTitle(String title) {
                this.title = title;
            }

            public String getWriter() {
                return writer;
            }

            public void setWriter(String writer) {
                this.writer = writer;
            }

            public String getCategory() {
                return category;
            }

            public void setCategory(String category) {
                this.category = category;
            }

            public String getKeywords() {
                return keywords;
            }

            public void setKeywords(String keywords) {
                this.keywords = keywords;
            }

            public String getDescription() {
                return description;
            }

            public void setDescription(String description) {
                this.description = description;
            }

            public int getThumbUp() {
                return thumbUp;
            }

            public void setThumbUp(int thumbUp) {
                this.thumbUp = thumbUp;
            }

            public int getThumbDown() {
                return thumbDown;
            }

            public void setThumbDown(int thumbDown) {
                this.thumbDown = thumbDown;
            }

            public String getContent() {
                return content;
            }

            public void setContent(String content) {
                this.content = content;
            }

            public String getTag() {
                return tag;
            }

            public void setTag(String tag) {
                this.tag = tag;
            }

            public long getCreateTime() {
                return createTime;
            }

            public void setCreateTime(long createTime) {
                this.createTime = createTime;
            }

            public String getSource() {
                return source;
            }

            public void setSource(String source) {
                this.source = source;
            }

            public String getSite() {
                return site;
            }

            public void setSite(String site) {
                this.site = site;
            }

            public int getReaded() {
                return readed;
            }

            public void setReaded(int readed) {
                this.readed = readed;
            }

            public int getComment() {
                return comment;
            }

            public void setComment(int comment) {
                this.comment = comment;
            }

            public int getApplaud() {
                return applaud;
            }

            public void setApplaud(int applaud) {
                this.applaud = applaud;
            }

            public String getImgSrc() {
                return imgSrc;
            }

            public void setImgSrc(String imgSrc) {
                this.imgSrc = imgSrc;
            }

            public String getMarkTime() {
                return markTime;
            }

            public void setMarkTime(String markTime) {
                this.markTime = markTime;
            }

            public double getScore() {
                return score;
            }

            public void setScore(double score) {
                this.score = score;
            }

            public double getCategoryScore() {
                return categoryScore;
            }

            public void setCategoryScore(double categoryScore) {
                this.categoryScore = categoryScore;
            }

            public boolean isHaveReaded() {
                return haveReaded;
            }

            public void setHaveReaded(boolean haveReaded) {
                this.haveReaded = haveReaded;
            }

            public int getProperty() {
                return property;
            }

            public void setProperty(int property) {
                this.property = property;
            }

            public Object getTime() {
                return time;
            }

            public void setTime(Object time) {
                this.time = time;
            }

            public String getTags() {
                return tags;
            }

            public void setTags(String tags) {
                this.tags = tags;
            }

            public Object getTypeMapList() {
                return typeMapList;
            }

            public void setTypeMapList(Object typeMapList) {
                this.typeMapList = typeMapList;
            }

            public long getRecommend_time() {
                return recommend_time;
            }

            public void setRecommend_time(long recommend_time) {
                this.recommend_time = recommend_time;
            }

            public String getFirst_image() {
                return first_image;
            }

            public void setFirst_image(String first_image) {
                this.first_image = first_image;
            }

            public String getTag_weight() {
                return tag_weight;
            }

            public void setTag_weight(String tag_weight) {
                this.tag_weight = tag_weight;
            }

            public double getSite_weight() {
                return site_weight;
            }

            public void setSite_weight(double site_weight) {
                this.site_weight = site_weight;
            }

            public String getCate() {
                return cate;
            }

            public void setCate(String cate) {
                this.cate = cate;
            }
        }
    }
}


//住方法

package com.example.wz.imageloaderdemo;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.widget.ListView;

import com.google.gson.Gson;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {
    private String urlPath = "http://zkread.com/htnewsroom/v2.0/mobileapp/user-0/categories/articles?itemType=recommendation&itemName=%25E6%258E%25A8%25E8%258D%2590&itemId=-1&page=1&size=20&firstId=1338557";
    private ListView lv;
    private List<Data.DataBean.ArticleListBean> list;
    private MyAdapter adapter;
    private Handler mHandler=new Handler(){
              @Override
              public void handleMessage(Message msg) {
                  super.handleMessage(msg);
                  Gson gson=new Gson();
                  Data data=gson.fromJson(msg.obj.toString(),Data.class);

                  list.addAll(data.getData().getArticleList());
                  adapter.notifyDataSetChanged();
              }
          };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        lv= (ListView) findViewById(R.id.lv);
        list=new ArrayList<>();
        adapter=new MyAdapter(this,list,R.layout.item);
        lv.setAdapter(adapter);

        loadData();
    }

    private void loadData() {
        new Thread(){
            @Override
            public void run() {
                String result = UrlUtils.getUrlConnect(urlPath);
                Message msg= Message.obtain();
                msg.what=1;
                msg.obj=result;
                mHandler.sendMessage(msg);
            }
        }.start();
    }
}



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
GeoPandas是一个开源的Python库,旨在简化地理空间数据的处理和分析。它结合了Pandas和Shapely的能力,为Python用户提供了一个强大而灵活的工具来处理地理空间数据。以下是关于GeoPandas的详细介绍: 一、GeoPandas的基本概念 1. 定义 GeoPandas是建立在Pandas和Shapely之上的一个Python库,用于处理和分析地理空间数据。 它扩展了Pandas的DataFrame和Series数据结构,允许在其中存储和操作地理空间几何图形。 2. 核心数据结构 GeoDataFrame:GeoPandas的核心数据结构,是Pandas DataFrame的扩展。它包含一个或多个列,其中至少一列是几何列(geometry column),用于存储地理空间几何图形(如点、线、多边形等)。 GeoSeries:GeoPandas中的另一个重要数据结构,类似于Pandas的Series,但用于存储几何图形序列。 二、GeoPandas的功能特性 1. 读取和写入多种地理空间数据格式 GeoPandas支持读取和写入多种常见的地理空间数据格式,包括Shapefile、GeoJSON、PostGIS、KML等。这使得用户可以轻松地从各种数据源中加载地理空间数据,并将处理后的数据保存为所需的格式。 2. 地理空间几何图形的创建、编辑和分析 GeoPandas允许用户创建、编辑和分析地理空间几何图形,包括点、线、多边形等。它提供了丰富的空间操作函数,如缓冲区分析、交集、并集、差集等,使得用户可以方便地进行地理空间数据分析。 3. 数据可视化 GeoPandas内置了数据可视化功能,可以绘制地理空间数据的地图。用户可以使用matplotlib等库来进一步定制地图的样式和布局。 4. 空间连接和空间索引 GeoPandas支持空间连接操作,可以将两个GeoDataFrame按照空间关系(如相交、包含等)进行连接。此外,它还支持空间索引,可以提高地理空间数据查询的效率。
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值