android ListView分页展示

2025-11-27 23:03:07

1、新建一个android项目,名称为ListViewAutoPage,其他参数可以自己配置,点击完成

android ListView分页展示

android ListView分页展示

2、首先在layout文件夹下声明listviewinfo.xml,作为listView的主要样式。其内容如下:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:orientation="vertical" >

    <ListView

        android:id="@+id/listViewInfo"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content" >

    </ListView>

</LinearLayout>

android ListView分页展示

3、声明列表中各个选项的信息展示,listitem.xml定义在layout文件夹下,其内容如下:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  

    android:orientation="vertical"  

    android:layout_width="fill_parent"  

    android:layout_height="fill_parent">  

    <TextView  

        android:id="@+id/listItem"  

        android:layout_width="fill_parent"  

        android:layout_height="fill_parent"  

        android:gravity="center"  

     

        android:paddingTop="10dp"  

        android:paddingBottom="10dp"/>  

</LinearLayout>

android ListView分页展示

4、设置“加载更多”按钮的样式文件,loadmore.xml。其内容是:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:orientation="vertical"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    >

   <Button  

        android:id="@+id/moreButton"  

        android:layout_width="fill_parent"  

        android:layout_height="wrap_content"  

    

        android:text="加载更多" />  

</LinearLayout>

android ListView分页展示

5、自定义适配器的实现。ListViewAutoAdapter继承BaseAdapter,其实现如下:

public class ListViewAutoAdapter extends BaseAdapter {

//定义结果集

private static Map<Integer,View> result = new HashMap<Integer,View>();

    private List<String> items;

    private LayoutInflater inflater;  //布局信息

    //构造函数,参数初始化

    public ListViewAutoAdapter(List<String> items, Context context) {  

        super();  

        this.items = items;  

        this.inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);  

    }  

@Override

public int getCount() {

// TODO Auto-generated method stub

return items.size();

}

@Override

public Object getItem(int position) {

// TODO Auto-generated method stub

return items.get(position);

}

@Override

public long getItemId(int position) {

// TODO Auto-generated method stub

return position;

}

@Override

public View getView(int position, View contentView, ViewGroup arg2) {

// TODO Auto-generated method stub

//从数组中获取元素,如果view为空,则填充相应文本信息

contentView=result.get(position);  

       if(contentView==null){  

           contentView=inflater.inflate(R.layout.listitem, null);  

           //找到TextView ,进行文本赋值

           TextView text=(TextView) contentView.findViewById(R.id.listItem);  

           //设置文本显示的内容

           text.setText(items.get(position));  

       }  

       result.put(position, contentView);  

       return contentView;  

}

public void addItem(String item) {    

       items.add(item);    

   }    

}

android ListView分页展示

android ListView分页展示

6、ListViewAutoPageShow主体函数实现:

public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.listviewinfo);

        //控件初始化

        loadMoreView = getLayoutInflater().inflate(R.layout.loadmore, null);    

        moreButton = (Button) loadMoreView.findViewById(R.id.moreButton); 

        moreButton.setOnClickListener(new OnClickListener() {  

            

            @Override  

            public void onClick(View v) {  

                // TODO Auto-generated method stub  

                moreButton.setText("正在加载...");   //设置按钮文字loading    

                //执行加载数据的线程

                handler.postDelayed(new Runnable() {    

                    @Override    

                    public void run() {    

                            

                        loadData();    

                            

                        adapter.notifyDataSetChanged(); //数据集变化后,通知adapter    

                    //    listView.setSelection(visibleLastIndex - visibleItemCount + 1); //设置选中项    

                            

                        moreButton.setText("加载更多");    //恢复按钮文字    

                    }    

                }, 1000);    

            }  

        });  

        

        listView = (ListView) this.findViewById(R.id.listViewInfo);  

        

        listView.addFooterView(loadMoreView);   //设置列表底部视图    

    

        //初始化数据适配器

        initAdapter();          

        listView.setAdapter(adapter);                //自动为id是list的ListView设置适配器          

        listView.setOnScrollListener(this);     //添加滑动监听    

        //按钮被选中的时候 触发的操作

        listView.setOnItemClickListener(new OnItemClickListener() {

@Override

public void onItemClick(AdapterView<?> arg0, View arg1, int position,

long arg3) {

// TODO Auto-generated method stub

//展示列表被选中的结果

 Toast.makeText(getApplicationContext(), items.get(position),Toast.LENGTH_SHORT).show();  

}  

        });  

    }     

    /**   

     * 初始化适配器   

     */    

    private void initAdapter() {    

       

        for (int i = 0; i < 10; i++) {    

            items.add("第"+String.valueOf(i + 1)+"个选项");    

        }    

        adapter = new ListViewAutoAdapter(items,this);    

    }

@Override

public void onScroll(AbsListView view, int firstVisibleItem,

int visibleItemCount, int totalItemCount) {

// TODO Auto-generated method stub

}

@Override

public void onScrollStateChanged(AbsListView view, int scrollState) {

// TODO Auto-generated method stub

 

         if (scrollState == OnScrollListener.SCROLL_STATE_IDLE  ) {    

             //如果是自动加载,可以在这里放置异步加载数据的代码    

             Log.i("LOADMORE", "loading...");    

         }    

}    

/**   

     * 模拟加载数据   

     */    

    private void loadData() {    

        int count = adapter.getCount();    

        for (int i = count; i < count + 10; i++) {    

            adapter.addItem("第"+String.valueOf(i + 1)+"个选项");    

        }    

    }  

android ListView分页展示

android ListView分页展示

android ListView分页展示

7、程序书写完毕之后,开始运行程序,观察实验结果

android ListView分页展示

android ListView分页展示

android ListView分页展示

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢