xlistview的使用


//mian方法

import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;

import com.example.xlistview.Bean.DataDataBean;
import com.example.xlistview.Utils.MyTask;
import com.example.xlistview.adapter.MyAdapter;
import com.example.xlistview.view.XListView;
import com.google.gson.Gson;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;


public class MainActivity extends AppCompatActivity {

    private List<DataDataBean.DataBean> lists = new ArrayList<DataDataBean.DataBean>();
    private XListView xListview;
    private MyAdapter myAdapter;

    private int pageIndex = 1;
    private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {

            if (msg.what == 1) {
                xListview.stopLoadMore();//关闭底部视图
            } else {

                Date date = new Date(System.currentTimeMillis());
                //yyyy-MM-dd HH:mm:ss
                SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm");
                String updateTime = simpleDateFormat.format(date);
                //设置刷新时间
                xListview.setRefreshTime(updateTime);


                xListview.stopRefresh();//关闭头部视图


            }

        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //找控件
        xListview = (XListView) findViewById(R.id.xlv);
        //支持下拉刷新
        xListview.setPullRefreshEnable(true);
        //支持上拉加载更多
        xListview.setPullLoadEnable(true);
        //设置监听事件
        xListview.setXListViewListener(new XListView.IXListViewListener() {
            @Override
            public void onRefresh() {//刷新回调接口
                //请求第一页的数据
                MyTask myTask = new MyTask(new MyTask.Icallbacks() {
                    @Override
                    public void updataUiByjson(String jsonstr) {

                        Gson gson = new Gson();
                        DataDataBean bean = gson.fromJson(jsonstr, DataDataBean.class);
                        //添加到集合中
                        lists.addAll(0, bean.getData());

                        //设置适配器
                        setAdapter();
                        //延迟关闭头部视图
                        handler.sendEmptyMessageDelayed(2, 500);

                    }
                });

                myTask.execute("http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page=1");

            }

            @Override
            public void onLoadMore() { //加载更多回调的接口
                pageIndex++;
                Log.i("zzz", "*****");
                MyTask myTask = new MyTask(new MyTask.Icallbacks() {
                    @Override
                    public void updataUiByjson(String jsonstr) {
                        Gson gson = new Gson();
                        DataDataBean bean = gson.fromJson(jsonstr, DataDataBean.class);

                        //将最新请求的数据添加到大集合对象中,
                        lists.addAll(bean.getData());
                        //设置适配器
                        setAdapter();

                        //关闭底部视图
                        handler.sendEmptyMessageDelayed(1, 500);
                    }
                });
                myTask.execute("http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page=" + pageIndex);
            }
        });
        //初始化
        requestNetData();
    }

    private void requestNetData() {
        MyTask myTask = new MyTask(new MyTask.Icallbacks() {
            @Override
            public void updataUiByjson(String jsonstr) {
                Gson gson = new Gson();
                DataDataBean bean = gson.fromJson(jsonstr, DataDataBean.class);
                //添加到大集合对象中
                lists.addAll(bean.getData());
                //设置适配器
                setAdapter();
            }
        });
        myTask.execute("http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page=1");
    }


    public void setAdapter() {
        if (myAdapter == null) {
            myAdapter = new MyAdapter(this, lists);
            xListview.setAdapter(myAdapter);
        } else {
            myAdapter.notifyDataSetChanged();
        }
    }

} 



//适配器

package com.example.xlistview.adapter;

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.example.xlistview.Bean.DataDataBean;
import com.example.xlistview.R;
import com.example.xlistview.Utils.ImageLoaderUtlis;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;

import java.util.List;

/**
 * Created by 知足 on 2017/10/13.
 */

public class MyAdapter  extends BaseAdapter{

   Context context;
   List<DataDataBean.DataBean> list;

    /*private DisplayImageOptions options;*/

    public MyAdapter(Context context, List<DataDataBean.DataBean> list) {
        this.context = context;
        this.list = list;

        /*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)//设置图片格式
                .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;
        if(convertView==null){
            convertView= View.inflate(context, R.layout.item_layout, null);
            holder=new ViewHolder();
            holder.textView= (TextView) convertView.findViewById(R.id.text_title);
            holder.imageView= (ImageView) convertView.findViewById(R.id.image_view);
            convertView.setTag(holder);
        }else{
            holder= (ViewHolder) convertView.getTag();
        }

          holder.textView.setText(list.get(position).getTitle());

        ImageLoader.getInstance().displayImage(list.get(position).getImg(),holder.imageView, ImageLoaderUtlis.imageOptions());

          return convertView;
    }
    class ViewHolder{
        ImageView imageView;
        TextView textView;
    }
}


//Beanbao解析的数据

public class DataDataBean {

    /**
     * code : 1
     * success : true
     * height : 0
     * width : 0
     * data : [{"userAge":33,"introduction":"83/巨蟹座/ 开朗幽默,热情善良,追求刺激/喜欢温柔,体贴,可爱,善良的女孩/金融","replyTimes":17,"url":"http://www.yulin520.com/a2a/h5/impress/i1/334?a=1507892610999","createTime":1466160199000,"hxKey":"60fd9c2377f81ba1ccca450fb794e016","img":"http://img1.yulin520.com/news/HPUCVP74IFR0OKCZ9QQH.jpg#405_304","yulin":"81373","star":58,"title":"刘峰鸣 :能文能武,Call Me峰鸣哥","occupation":"证劵投资","userImg":"http://img1.yulin520.com/news/HPUCVP74IFR0OKCZ9QQH.jpg#405_304","impressEditId":334,"impressType":0,"topTime":1469503026000,"recommend":0,"remark":"","click":0,"userName":"LLL","source":0,"reporter":0,"status":1,"content":""},{"userAge":25,"introduction":"91/处女座/性格直白,爱好广泛,有点女汉子/喜欢性格开朗,三观契合,高冷文艺范,有肌肉,175+/公司职业","replyTimes":12,"url":"http://www.yulin520.com/a2a/h5/impress/i1/319?a=1507892610999","createTime":1465380170000,"hxKey":"dac884f7cc81691ba28a004091cbe122","img":"http://img1.yulin520.com/news/BPKZUX0MNFR0OT0WLCOD.png#598_450","yulin":"80821","star":77,"title":"刘佳怡 :直白女汉子也有个文艺梦","occupation":"保险","userImg":"http://img1.yulin520.com/news/BPKZUX0MNFR0OT0WLCOD.png#598_450","impressEditId":319,"impressType":0,"topTime":1469503022000,"recommend":0,"remark":"","click":0,"userName":"嘉咦咦咦","source":0,"reporter":0,"status":1,"content":""},{"userAge":29,"introduction":"87/处女座/善良可爱,安静温柔,爱独立思考/喜欢三观相似,经历相似,性格活泼的女孩/互联网设计师 ","replyTimes":13,"url":"http://www.yulin520.com/a2a/h5/impress/i1/324?a=1507892610999","createTime":1465722569000,"hxKey":"ebf75ccd1fba85f248988d40e572914e","img":"http://img1.yulin520.com/news/UPPN83L0IFR0OBC1A4AK.jpg#800_600","yulin":"80569","star":52,"title":"陈松 :爱搞新花样的设计师","occupation":"互联网","userImg":"http://img1.yulin520.com/news/UPPN83L0IFR0OBC1A4AK.jpg#800_600","impressEditId":324,"impressType":0,"topTime":1468980785000,"recommend":0,"remark":"","click":0,"userName":"Song","source":0,"reporter":0,"status":1,"content":""},{"userAge":26,"introduction":"90/天蝎座/爱美食,爱分享,有点内向/喜欢阳光,干净,175+的男孩子/银行接待","replyTimes":16,"url":"http://www.yulin520.com/a2a/h5/impress/i1/323?a=1507892610999","createTime":1465721939000,"hxKey":"580786532670bc072b0aeb795bd6ddc7","img":"http://img1.yulin520.com/news/SPPW8T9QHFR0OM3HID0X.jpg#1280_960","yulin":"80983","star":101,"title":"秦心 :外形不娇小,心思很细腻","occupation":"银行","userImg":"http://img1.yulin520.com/news/SPPW8T9QHFR0OM3HID0X.jpg#1280_960","impressEditId":323,"impressType":0,"topTime":1468980773000,"recommend":0,"remark":"","click":0,"userName":"秦心","source":0,"reporter":0,"status":1,"content":""},{"userAge":23,"introduction":"93/水瓶座/温柔体贴,踏实细心/喜欢三观相符的女孩子/前端工程师","replyTimes":17,"url":"http://www.yulin520.com/a2a/h5/impress/i1/337?a=1507892610999","createTime":1466162998000,"hxKey":"37dee7aaed1862c64c4fe38d75ccd52a","img":"http://img1.yulin520.com/news/XPW8OZXMSFR0O015UA7D.jpg#598_597","yulin":"81316","star":55,"title":"温其堂 :细心温柔IT\u201c熊猫\u201d","occupation":"互联网","userImg":"http://img1.yulin520.com/news/XPW8OZXMSFR0O015UA7D.jpg#598_597","impressEditId":337,"impressType":0,"topTime":1468574992000,"recommend":0,"remark":"","click":0,"userName":"榴莲","source":0,"reporter":0,"status":1,"content":""},{"userAge":24,"introduction":"92/金牛座 /性格随和,自信大方/喜欢脾气好,爱运动,对人友好的男生/公司职员","replyTimes":13,"url":"http://www.yulin520.com/a2a/h5/impress/i1/340?a=1507892610999","createTime":1466500236000,"hxKey":"2a294b9ffd9fb38d7b5b8739c821720f","img":"http://img1.yulin520.com/news/RPZ58LLNXFR0OKFGFHGK.jpg#616_695","yulin":"81370","star":72,"title":"曾思慧: 爱冒险爱尖叫的真性情Girl","occupation":"银行","userImg":"http://img1.yulin520.com/news/RPZ58LLNXFR0OKFGFHGK.jpg#616_695","impressEditId":340,"impressType":0,"topTime":1468574986000,"recommend":0,"remark":"","click":0,"userName":"pony","source":0,"reporter":0,"status":1,"content":""},{"userAge":25,"introduction":"91/巨蟹座/乐观开朗,沉稳内敛,机智幽默/喜欢温柔,体贴,孝顺的女生","replyTimes":11,"url":"http://www.yulin520.com/a2a/h5/impress/i1/341?a=1507892610999","createTime":1466678686000,"hxKey":"9f2d5f4346dee0c4983cb77f9a1892e7","img":"http://img1.yulin520.com/news/NQ1HJD75IFR0OARCWFEG.jpg#501_499","yulin":"80908","star":34,"title":"杨辉: 挑战自我从早起开始","occupation":"市场推广","userImg":"http://img1.yulin520.com/news/NQ1HJD75IFR0OARCWFEG.jpg#501_499","impressEditId":341,"impressType":0,"topTime":1468203095000,"recommend":0,"remark":"","click":0,"userName":"拯救","source":0,"reporter":0,"status":1,"content":""},{"userAge":24,"introduction":"92年 狮子座/开朗东北妞/想开书店/公司职员","replyTimes":9,"url":"http://www.yulin520.com/a2a/h5/impress/i1/244?a=1507892610999","createTime":1461738088000,"hxKey":"751120bb7102fa563f098ee8c33ecb67","img":"http://img1.yulin520.com/news/SO9EZSX0QC90ONZY8SVZ.jpg#619_650","yulin":"77323","star":46,"title":"蔡嘉纯:咱东北菇凉特开朗","occupation":"市场推广","userImg":"http://img1.yulin520.com/news/SO9EZSX0QC90ONZY8SVZ.jpg#619_650","impressEditId":244,"impressType":0,"topTime":1467618377000,"recommend":0,"remark":"","click":0,"userName":"bibibi","source":0,"reporter":0,"status":1,"content":""},{"userAge":22,"introduction":"94年 水瓶座/曾经是淘气包/人缘好讲义气/金融业客户经理","replyTimes":11,"url":"http://www.yulin520.com/a2a/h5/impress/i1/246?a=1507892610999","createTime":1461749927000,"hxKey":"785fd3ce68d2a280a99896946dc67bf2","img":"http://img1.yulin520.com/news/OOAA5UE7EC90OM4X4AQ7.jpg#800_600","yulin":"77479","star":41,"title":"李林:曾经的淘气小子","occupation":"信贷","userImg":"http://img1.yulin520.com/news/OOAA5UE7EC90OM4X4AQ7.jpg#800_600","impressEditId":246,"impressType":0,"topTime":1467367384000,"recommend":0,"remark":"","click":0,"userName":"李林","source":0,"reporter":0,"status":1,"content":""},{"userAge":25,"introduction":"91年 天蝎座/积极乐观/追求新奇事物/互联网销售经理","replyTimes":16,"url":"http://www.yulin520.com/a2a/h5/impress/i1/218?a=1507892610999","createTime":1460446369000,"hxKey":"406e5f1f020f65203d200b686cd11da3","img":"http://img1.yulin520.com/news/FNTQDAWAJKF0OGYIUMRO.jpg#800_600","yulin":"76330","star":53,"title":"唐政:眉清目秀好少年","occupation":"互联网","userImg":"http://img1.yulin520.com/news/FNTQDAWAJKF0OGYIUMRO.jpg#800_600","impressEditId":218,"impressType":0,"topTime":1467367368000,"recommend":0,"remark":"","click":0,"userName":"Truman","source":0,"reporter":0,"status":1,"content":""}]
     * message : null
     */

    private int code;
    private boolean success;
    private int height;
    private int width;
    private Object message;
    private List<DataBean> data;

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public boolean isSuccess() {
        return success;
    }

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

    public int getHeight() {
        return height;
    }

    public void setHeight(int height) {
        this.height = height;
    }

    public int getWidth() {
        return width;
    }

    public void setWidth(int width) {
        this.width = width;
    }

    public Object getMessage() {
        return message;
    }

    public void setMessage(Object message) {
        this.message = message;
    }

    public List<DataBean> getData() {
        return data;
    }

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

    public static class DataBean {
        /**
         * userAge : 33
         * introduction : 83/巨蟹座/ 开朗幽默,热情善良,追求刺激/喜欢温柔,体贴,可爱,善良的女孩/金融
         * replyTimes : 17
         * url : http://www.yulin520.com/a2a/h5/impress/i1/334?a=1507892610999
         * createTime : 1466160199000
         * hxKey : 60fd9c2377f81ba1ccca450fb794e016
         * img : http://img1.yulin520.com/news/HPUCVP74IFR0OKCZ9QQH.jpg#405_304
         * yulin : 81373
         * star : 58
         * title : 刘峰鸣 :能文能武,Call Me峰鸣哥
         * occupation : 证劵投资
         * userImg : http://img1.yulin520.com/news/HPUCVP74IFR0OKCZ9QQH.jpg#405_304
         * impressEditId : 334
         * impressType : 0
         * topTime : 1469503026000
         * recommend : 0
         * remark :
         * click : 0
         * userName : LLL
         * source : 0
         * reporter : 0
         * status : 1
         * content :
         */

        private int userAge;
        private String introduction;
        private int replyTimes;
        private String url;
        private long createTime;
        private String hxKey;
        private String img;
        private String yulin;
        private int star;
        private String title;
        private String occupation;
        private String userImg;
        private int impressEditId;
        private int impressType;
        private long topTime;
        private int recommend;
        private String remark;
        private int click;
        private String userName;
        private int source;
        private int reporter;
        private int status;
        private String content;

        public int getUserAge() {
            return userAge;
        }

        public void setUserAge(int userAge) {
            this.userAge = userAge;
        }

        public String getIntroduction() {
            return introduction;
        }

        public void setIntroduction(String introduction) {
            this.introduction = introduction;
        }

        public int getReplyTimes() {
            return replyTimes;
        }

        public void setReplyTimes(int replyTimes) {
            this.replyTimes = replyTimes;
        }

        public String getUrl() {
            return url;
        }

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

        public long getCreateTime() {
            return createTime;
        }

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

        public String getHxKey() {
            return hxKey;
        }

        public void setHxKey(String hxKey) {
            this.hxKey = hxKey;
        }

        public String getImg() {
            return img;
        }

        public void setImg(String img) {
            this.img = img;
        }

        public String getYulin() {
            return yulin;
        }

        public void setYulin(String yulin) {
            this.yulin = yulin;
        }

        public int getStar() {
            return star;
        }

        public void setStar(int star) {
            this.star = star;
        }

        public String getTitle() {
            return title;
        }

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

        public String getOccupation() {
            return occupation;
        }

        public void setOccupation(String occupation) {
            this.occupation = occupation;
        }

        public String getUserImg() {
            return userImg;
        }

        public void setUserImg(String userImg) {
            this.userImg = userImg;
        }

        public int getImpressEditId() {
            return impressEditId;
        }

        public void setImpressEditId(int impressEditId) {
            this.impressEditId = impressEditId;
        }

        public int getImpressType() {
            return impressType;
        }

        public void setImpressType(int impressType) {
            this.impressType = impressType;
        }

        public long getTopTime() {
            return topTime;
        }

        public void setTopTime(long topTime) {
            this.topTime = topTime;
        }

        public int getRecommend() {
            return recommend;
        }

        public void setRecommend(int recommend) {
            this.recommend = recommend;
        }

        public String getRemark() {
            return remark;
        }

        public void setRemark(String remark) {
            this.remark = remark;
        }

        public int getClick() {
            return click;
        }

        public void setClick(int click) {
            this.click = click;
        }

        public String getUserName() {
            return userName;
        }

        public void setUserName(String userName) {
            this.userName = userName;
        }

        public int getSource() {
            return source;
        }

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

        public int getReporter() {
            return reporter;
        }

        public void setReporter(int reporter) {
            this.reporter = reporter;
        }

        public int getStatus() {
            return status;
        }

        public void setStatus(int status) {
            this.status = status;
        }

        public String getContent() {
            return content;
        }

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


//工具包

public class ImageLoaderUtlis {
    public  static  void inint(Context context){
        File cacheDir = StorageUtils.getCacheDirectory(context);  //缓存文件夹路径
        ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)

                .threadPoolSize(3) // default  线程池内加载的数量
                .threadPriority(Thread.NORM_PRIORITY - 2) // default 设置当前线程的优先级
                .tasksProcessingOrder(QueueProcessingType.FIFO) // default
                .denyCacheImageMultipleSizesInMemory()
                .memoryCache(new LruMemoryCache(2 * 1024 * 1024)) //可以通过自己的内存缓存实现
                .memoryCacheSize(2 * 1024 * 1024)  // 内存缓存的最大值
                .memoryCacheSizePercentage(13) // default
                .diskCache(new UnlimitedDiscCache(cacheDir)) // default 可以自定义缓存路径
                .diskCacheSize(50 * 1024 * 1024) // 50 Mb sd(本地)缓存的最大值
                .diskCacheFileCount(100)  // 可以缓存的文件数量
                // default为使用HASHCODEUIL进行加密命名, 还可以用MD5(new Md5FileNameGenerator())加密
                .diskCacheFileNameGenerator(new HashCodeFileNameGenerator())
                .imageDownloader(new BaseImageDownloader(context)) // default
                .defaultDisplayImageOptions(DisplayImageOptions.createSimple()) // default
                .writeDebugLogs() // 打印debug log
                .build(); //开始构建
        ImageLoader.getInstance().init(config);
    }
    public  static  DisplayImageOptions imageOptions(){
        DisplayImageOptions options = new DisplayImageOptions.Builder()
                .showImageOnLoading(R.mipmap.ic_launcher) // 设置图片下载期间显示的图片
                .showImageForEmptyUri(R.mipmap.ic_launcher) // 设置图片Uri为空或是错误的时候显示的图片
                .showImageOnFail(R.mipmap.ic_launcher) // 设置图片加载或解码过程中发生错误显示的图片
                .resetViewBeforeLoading(true)  // default 设置图片在加载前是否重置、复位
                .delayBeforeLoading(1000)  // 下载前的延迟时间
                .cacheInMemory(true) // default  设置下载的图片是否缓存在内存中
                .cacheOnDisk(true) // default  设置下载的图片是否缓存在SD卡中

                .considerExifParams(true) // default
                .imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2) // default 设置图片以如何的编码方式显示
                .bitmapConfig(Bitmap.Config.RGB_565) // default 设置图片的解码类型

                .displayer(new SimpleBitmapDisplayer()) // default  还可以设置圆角图片new RoundedBitmapDisplayer(20);;CircleBitmapDisplayer()圆形

                .build();
        return  options;
    }
}


//工具包

public class MyTask  extends AsyncTask<String,Void,String>{

    private Icallbacks icallbacks;

    public MyTask(Icallbacks icallbacks) {
        this.icallbacks = icallbacks;
    }


    @Override
    protected String doInBackground(String... params) {
     String str="";

        try {
            URL url=new URL(params[0]);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setRequestMethod("GET");
            connection.setReadTimeout(5000);
            connection.setConnectTimeout(5000);

            if(connection.getResponseCode()==200){
                InputStream inputStream = connection.getInputStream();
                //调用静态类中的方法
                str=StreamToString.streamToStr(inputStream,"utf-8");
            }
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return str;
    }

    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
        icallbacks.updataUiByjson(s);
    }

    //定一个接口
    public interface Icallbacks{

        void  updataUiByjson(String jsonstr);
    }
}

//工具包

public class StreamToString {

    public static String streamToStr(InputStream inputStream,String charset){

     StringBuilder builder=new StringBuilder();
        try {
            BufferedReader br=new BufferedReader(new InputStreamReader(inputStream,"utf-8"));
            String con;
            while((con=br.readLine())!=null){
                builder.append(con);
            }
            br.close();
            return  builder.toString();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "";
    }
}


//工具包调用

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        ImageLoaderUtlis.inint(this);
    }
}


//activity-main

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" tools:context="com.example.xlistview.MainActivity">


     <com.example.xlistview.view.XListView
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:id="@+id/xlv"
         ></com.example.xlistview.view.XListView>

</RelativeLayout>

//item

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">


    <ImageView
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:id="@+id/image_view"
        />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/text_title"
        />

</LinearLayout>

//要加的权限
 
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
android:name=".MyApplication"


//还有要从网上下载XListView-Android-master 导入项目中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值