android listview分页

来源:互联网 发布:三益钢琴js 600na图片 编辑:程序博客网 时间:2024/05/17 07:16

先看下目录结构

这里写图片描述

实现效果

这里写图片描述

创建TitleBean.java

public class TitleBean {    int imgId;    String content;    public int getImgId() {        return imgId;    }    public void setImgId(int imgId) {        this.imgId = imgId;    }    public String getContent() {        return content;    }    public void setContent(String content) {        this.content = content;    }    @Override    public String toString() {        return "TitleBean{" +                "imgId=" + imgId +                ", content='" + content + '\'' +                '}';    }}

MyAdapter.java

import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;import java.util.ArrayList;/** * Created by Administrator on 2016/5/28. */public class MyBaseAdapter extends BaseAdapter {    private ArrayList <TitleBean>list;    private Context context;    public MyBaseAdapter(ArrayList<TitleBean> list,Context context) {        this.list = list;        this.context=context;    }    public void onDateChange(ArrayList<TitleBean> list) {        this.list = list;        this.notifyDataSetChanged();    }    @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) {      TitleBean bean= (TitleBean) getItem(position);        ViewHoder hoder;        View view=null;        if (convertView==null){            view= LayoutInflater.from(context).inflate(R.layout.item,null);            hoder=new ViewHoder();            hoder.TitleimgId= (ImageView) view.findViewById(R.id.img);            hoder.Titlecontent= (TextView) view.findViewById(R.id.et_content);            view.setTag(hoder);        }else {            view=convertView;            hoder= (ViewHoder) view.getTag();        }        hoder.TitleimgId.setImageResource(bean.getImgId());        hoder.Titlecontent.setText(bean.getContent());        return view;    }    private class ViewHoder{        ImageView TitleimgId;        TextView Titlecontent;    }}

MyListView.java

import android.content.Context;import android.util.AttributeSet;import android.view.LayoutInflater;import android.view.View;import android.widget.AbsListView;import android.widget.ListView;/** * Created by Administrator on 2016/5/28. */public class LoadListView extends ListView implements ListView.OnScrollListener {    View footer;// 底部布局;    int totalItemCount;// 总数量;    int lastVisibleItem;// 最后一个可见的item;    boolean isLoading;// 正在加载;    ILoadListener iLoadListener;    public LoadListView(Context context) {        super(context);        // TODO Auto-generated constructor stub        initView(context);    }    public LoadListView(Context context, AttributeSet attrs) {        super(context, attrs);        // TODO Auto-generated constructor stub        initView(context);    }    public LoadListView(Context context, AttributeSet attrs, int defStyle) {        super(context, attrs, defStyle);        // TODO Auto-generated constructor stub        initView(context);    }    /**     * 添加底部加载提示布局到listview     *     * @param context     */    private void initView(Context context) {        LayoutInflater inflater = LayoutInflater.from(context);        footer = inflater.inflate(R.layout.load_more, null);        footer.findViewById(R.id.load_layout).setVisibility(View.GONE);        this.addFooterView(footer);        this.setOnScrollListener(this);    }    @Override    public void onScroll(AbsListView view, int firstVisibleItem,                         int visibleItemCount, int totalItemCount) {        // TODO Auto-generated method stub        this.lastVisibleItem = firstVisibleItem + visibleItemCount;        this.totalItemCount = totalItemCount;    }    @Override    public void onScrollStateChanged(AbsListView view, int scrollState) {        // TODO Auto-generated method stub        if (totalItemCount == lastVisibleItem                && scrollState == SCROLL_STATE_IDLE) {            if (!isLoading) {                isLoading = true;                footer.findViewById(R.id.load_layout).setVisibility(                        View.VISIBLE);                // 加载更多                iLoadListener.onLoad();            }        }    }    /**     * 加载完毕     */    public void loadComplete(){        isLoading = false;        footer.findViewById(R.id.load_layout).setVisibility(                View.GONE);    }    public void setInterface(ILoadListener iLoadListener){        this.iLoadListener = iLoadListener;    }    //加载更多数据的回调接口    public interface ILoadListener{         void onLoad();    }}

MainActivity.java

import android.os.Handler;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.ListView;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity implements LoadListView.ILoadListener {    private LoadListView mListView;    private ArrayList list = new ArrayList();    MyBaseAdapter adapter;    private int[] titleArr = new int[]{R.mipmap.ic_launcher            , R.mipmap.ic_launcher, R.mipmap.ic_launcher            , R.mipmap.ic_launcher, R.mipmap.ic_launcher            , R.mipmap.ic_launcher, R.mipmap.ic_launcher            , R.mipmap.ic_launcher, R.mipmap.ic_launcher            , R.mipmap.ic_launcher, R.mipmap.ic_launcher            , R.mipmap.ic_launcher, R.mipmap.ic_launcher            , R.mipmap.ic_launcher, R.mipmap.ic_launcher            , R.mipmap.ic_launcher, R.mipmap.ic_launcher            , R.mipmap.ic_launcher, R.mipmap.ic_launcher            , R.mipmap.ic_launcher, R.mipmap.ic_launcher    };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mListView = (LoadListView) findViewById(R.id.lv);        loadData();        showListView(list);    }    private void showListView(ArrayList<TitleBean> list) {        if (adapter == null) {            mListView = (LoadListView) findViewById(R.id.lv);            mListView.setInterface(this);            adapter = new MyBaseAdapter(list, this);            mListView.setAdapter(adapter);        } else {            adapter.onDateChange(list);        }    }    public void loadData() {        for (int i = 0; i < titleArr.length; i++) {            TitleBean bean = new TitleBean();            bean.setImgId(titleArr[i]);            bean.setContent("i am " + i + " content");            list.add(bean);        }    }    public void loadMoreData() {        for (int i = 0; i < 10; i++) {            TitleBean bean = new TitleBean();            bean.setImgId(titleArr[i]);            bean.setContent("i am " + "new  content");            list.add(bean);        }    }    @Override    public void onLoad() {        Handler handler = new Handler();        handler.postDelayed(new Runnable() {            @Override            public void run() {                // TODO Auto-generated method stub                //获取更多数据                loadMoreData();                //更新listview显示;                showListView(list);                //通知listview加载完毕                mListView.loadComplete();            }        }, 2000);    }}

activity_main.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:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="com.example.edu.listviewtest.MainActivity">   <com.example.edu.listviewtest.LoadListView       android:layout_width="match_parent"       android:layout_height="match_parent"       android:id="@+id/lv">   </com.example.edu.listviewtest.LoadListView></RelativeLayout>

item.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="horizontal" android:layout_width="match_parent"    android:layout_height="match_parent">    <ImageView        android:id="@+id/img"        android:src="@mipmap/ic_launcher"        android:layout_width="50dp"        android:layout_height="50dp" />    <TextView        android:id="@+id/et_content"        android:gravity="center_horizontal"        android:textSize="20sp"        android:text="aaaaa"        android:layout_width="match_parent"        android:layout_height="50dp" /></LinearLayout>

load_more.xml

<?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"    android:orientation="vertical" >    <LinearLayout        android:id="@+id/load_layout"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:gravity="center"        android:orientation="horizontal"        android:paddingBottom="10dip"        android:paddingTop="10dip" >        <ProgressBar            style="?android:attr/progressBarStyleSmall"            android:layout_width="wrap_content"            android:layout_height="wrap_content" />        <TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="正在加载..." />    </LinearLayout></LinearLayout>
0 0
原创粉丝点击