xlistview的实现

来源:互联网 发布:心理训练软件 编辑:程序博客网 时间:2024/06/12 00:41

XML布局

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/activity_main"    android:layout_width="match_parent"    android:layout_height="match_parent">    <com.example.weikai09d20170911.view.XListView        android:id="@+id/xListView"        android:layout_width="fill_parent"        android:layout_height="fill_parent"        android:cacheColorHint="#00000000">    </com.example.weikai09d20170911.view.XListView></RelativeLayout
MainActivity主页面
package com.example.weikai09d20170911;import android.os.AsyncTask;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.AdapterView;import android.widget.ListView;import android.widget.Toast;import com.example.weikai09d20170911.view.XListView;import com.google.gson.Gson;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import java.net.URLConnection;import java.nio.file.Path;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener {    //设置地址路径    private String path="http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page=";    //初始化值    private int NUM=10;    private XListView xListView;    private List<Bean.DataBean> list = new ArrayList<>();    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //找到控件        xListView = (XListView) findViewById(R.id.xListView);        //设置可以加载        xListView.setPullLoadEnable(true);        xListView.setPullRefreshEnable(true);        xListView.setXListViewListener(this);        getDuqu();    }    private void getDuqu() {        //异步任务        AsyncTask<Void, Void, String> asyncTask = new AsyncTask<Void, Void, String>() {            @Override            protected String doInBackground(Void... voids) {                try {                    URL url = new URL(path + NUM);                    //请求网络                    HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();                    //设置什么方式请求                    urlConnection.setRequestMethod("GET");                    //设置延时                    urlConnection.setConnectTimeout(5000);                    urlConnection.setReadTimeout(5000);                    int responseCode = urlConnection.getResponseCode();                    //判断请求是否成功                    if (responseCode==200){                        InputStream inputStream = urlConnection.getInputStream();                        String json = LiuDeZhuanHuan(inputStream);                        Log.i("-------------",json.toString());                        return json;                    }                } catch (Exception e) {                    e.printStackTrace();                }                return "";            }            @Override            protected void onPostExecute(String json) {                super.onPostExecute(json);                //拿到数据                Gson gson = new Gson();                Bean bean = gson.fromJson(json, Bean.class);                List<Bean.DataBean> list01 = bean.getData();                //将数据添加爱集合                list.addAll(list01);                setadapter();                xListView.stopLoadMore();            }        };        asyncTask.execute();    }    //设置适配器    private void setadapter() {        Myadapter myadapter = new Myadapter(MainActivity.this, list);        xListView.setAdapter(myadapter);        //myadapter.notifyDataSetChanged();    }    //流的转化    private String LiuDeZhuanHuan(InputStream inputStream) {        InputStreamReader inputStreamReader = new InputStreamReader(inputStream);        BufferedReader bufferedReader = new BufferedReader(inputStreamReader);        StringBuilder builder = new StringBuilder();        String string = null;        try {            while ((string=bufferedReader.readLine())!=null){                builder.append(string);            }            return builder.toString();        } catch (Exception e) {            e.printStackTrace();        }        return null;    }    @Override    public void onRefresh() {       //下拉加载        NUM--;        if (NUM>0){            AsyncTask<Void, Void, String> asyncTask = new AsyncTask<Void, Void, String>() {                @Override                protected String doInBackground(Void... voids) {                    try {                        //请求网络                        URL url = new URL(path + NUM);                        HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();                        //设置什么方式请求                        urlConnection.setRequestMethod("GET");                        //设置访问网络的延时                        urlConnection.setConnectTimeout(5000);                        urlConnection.setReadTimeout(5000);                        int responseCode = urlConnection.getResponseCode();                        //判断网络请求成功                        if (responseCode==200){                            InputStream inputStream = urlConnection.getInputStream();                            String json = LiuDeZhuanHuan(inputStream);                            return json;                        }                    } catch (Exception e) {                        e.printStackTrace();                    }                    return "";                }                @Override                protected void onPostExecute(String json) {                    super.onPostExecute(json);                    Gson gson = new Gson();                    Bean bean = gson.fromJson(json, Bean.class);                    List<Bean.DataBean> list02 = bean.getData();                    list.addAll(0,list02);                    setadapter();                    xListView.stopRefresh();                }            };            asyncTask.execute();        }else {            //数据加载完进行提示            Toast.makeText(MainActivity.this,"数据加载完",Toast.LENGTH_LONG).show();        }    }    //上拉刷新    @Override    public void onLoadMore() {        NUM++;        getDuqu();    }}
Myadapter控件
package com.example.weikai09d20170911;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 com.nostra13.universalimageloader.core.ImageLoader;import java.util.List;/** * Created by My on 2017/9/11. */public class Myadapter extends BaseAdapter {    Context context;    List<Bean.DataBean> list;    public Myadapter(Context context, List<Bean.DataBean> list) {        this.context=context;        this.list=list;    }    @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 int getViewTypeCount() {        return 2;    }    @Override    public int getItemViewType(int position) {        if (position%2==0){            return 0;        }else {            return 1;        }    }    @Override    public View getView(int i, View view, ViewGroup viewGroup) {        int type =getItemViewType(i);        ViewHolder viewHolder = null;        ViewHolder2 viewHolder2 = null;        switch(type){            case 1:            {                if(view == null){                    viewHolder= new ViewHolder();                    //找到控件                    view =View.inflate(context,R.layout.yangshi,null);                    viewHolder.textview = (TextView)view.findViewById(R.id.textview);                    view.setTag(viewHolder);                }else{                    viewHolder= (ViewHolder) view.getTag();                }            }            break;            case 0:            {                if(view == null){                    viewHolder2 = new ViewHolder2();                    //找到控件                    view =View.inflate(context,R.layout.yangshi02,null);                    viewHolder2.textview01 = (TextView)view.findViewById(R.id.textview01);                    viewHolder2.imageview = (ImageView)view.findViewById(R.id.imageview);                    view.setTag(viewHolder2);                }else{                    viewHolder2 = (ViewHolder2) view.getTag();                }            }            break;        }        switch(type){            case 0:            { //为控件赋值                ImageLoader.getInstance().displayImage(list.get(i).getImg(),viewHolder2.imageview);                //loadImage(list.get(i).getImg(),viewHolder2.ivIcon2);                viewHolder2.textview01.setText(list.get(i).getTitle());            }            break;            case 1:            {  //为控件赋值                viewHolder.textview.setText(list.get(i).getTitle());            }            break;        }        return view;    }    //ViewHolder    class ViewHolder{        TextView textview;    }    class ViewHolder2{        TextView textview01;        ImageView imageview;    }}








原创粉丝点击