Android: BaseAdapter 实现分页
来源:互联网 发布:建房成本计算器软件 编辑:程序博客网 时间:2024/06/05 05:00
- 列表的显示需要三个元素:
- 1.ListVeiw 用来展示列表的View。
- 2.适配器 用来把数据映射到ListView上的中介。
- 3.数据 具体的将被映射的字符串,图片,或者基本组件。
- 根据列表的适配器类型,列表分为三种,ArrayAdapter,SimpleAdapter和SimpleCursorAdapter
- 其中以ArrayAdapter最为简单,只能展示一行字。
- SimpleAdapter有最好的扩充性,可以自定义出各种效果。
- SimpleCursorAdapter可以认为是SimpleAdapter对数据库的简单结合,可以方便的把数据库的内容以列表的形式展示出来。
分页效果图:
- <ListView android:id="@+id/list"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content" />
- lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="horizontal" android:layout_width="fill_parent"
- android:layout_height="wrap_content" android:gravity="bottom">
- <Button android:id="@+id/btnLeft"
- android:layout_width="150dip"
- android:layout_height="wrap_content"
- android:text="Previous Page" />
- <Button android:id="@+id/btnRight"
- android:layout_width="150dip"
- android:layout_height="wrap_content"
- android:text="Next Page" />
- </LinearLayout>
- import android.app.Activity;
- import android.os.Bundle;
- import android.view.Gravity;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.BaseAdapter;
- import android.widget.Button;
- import android.widget.ListView;
- import android.widget.TextView;
- public class listMoreTest extends Activity {
- int VIEW_COUNT = 10;
- int index = 0;
- ListView listView;
- Button btnLeft, btnRight;
- View.OnClickListener clickListener;
- MyAdapter myAdapter;
- String[] data = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10",
- "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21",
- "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32",
- "33", "34", "35", "36", "37" };
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.listview);
- initView();
- // 设置ListView的Adapter
- myAdapter = new MyAdapter(this);
- // TODO 此处是双向绑定吗?
- listView.setAdapter(myAdapter);
- clickListener = new Button.OnClickListener() {
- @Override
- public void onClick(View v) {
- switch (v.getId()) {
- case R.id.btnLeft:
- leftView();
- break;
- case R.id.btnRight:
- rightView();
- break;
- }
- }
- };
- btnLeft.setOnClickListener(clickListener);
- btnRight.setOnClickListener(clickListener);
- changeButtonStatus();
- }
- public void initView() {
- listView = (ListView) findViewById(R.id.list);
- btnLeft = (Button) findViewById(R.id.btnLeft);
- btnRight = (Button) findViewById(R.id.btnRight);
- }
- /**
- * 点击左边的Button,表示向前翻页,索引值要减1.
- */
- public void leftView() {
- index--;
- // 刷新ListView里面的数值。
- myAdapter.notifyDataSetChanged();
- changeButtonStatus();
- }
- /**
- * 点击右边的Button,表示向后翻页,索引值要加1.
- */
- public void rightView() {
- index++;
- // 刷新ListView里面的数值。
- myAdapter.notifyDataSetChanged();
- changeButtonStatus();
- }
- /**
- * 变更btnLeft与btnRight按钮是否可用。
- */
- public void changeButtonStatus() {
- if (index <= 0) {
- btnLeft.setEnabled(false);
- } else if (data.length - index * VIEW_COUNT <= VIEW_COUNT) {
- btnRight.setEnabled(false);
- } else {
- btnLeft.setEnabled(true);
- btnRight.setEnabled(true);
- }
- }
- // ListView的Adapter,这个是关键的导致可以分页的根本原因。
- public class MyAdapter extends BaseAdapter {
- Activity activity;
- public MyAdapter(Activity a) {
- activity = a;
- }
- /**
- * 设置每一页的长度,默认的是View_Count的值。
- */
- @Override
- public int getCount() {
- // ori表示到目前为止的前几页的总共的个数。
- int ori = VIEW_COUNT * index;
- if (data.length - ori < VIEW_COUNT) {
- return data.length - ori;
- } else {
- return VIEW_COUNT;
- }
- }
- /**
- * 显示TextView data。
- */
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- // return addTestView(position);
- TextView textView = new TextView(activity);
- textView.setGravity(Gravity.LEFT);
- textView.setText(data[position + index * VIEW_COUNT]);
- return textView;
- }
- @Override
- public Object getItem(int position) {
- return position;
- }
- @Override
- public long getItemId(int position) {
- return position;
- }
- }
- }
0 0
- Android: BaseAdapter 实现分页
- android--(布局ListView、优化、刷新分页、ArrayAdapter、SimpleAdapter 、BaseAdapter)
- Android 使用BaseAdapter实现异步图片加载
- Android入门:ListView(继承BaseAdapter实现)
- android 拖拉图片 Gallery 用BaseAdapter实现
- 【Android】使用BaseAdapter实现复杂的ListView
- 【Android】使用BaseAdapter实现复杂的ListView
- Android-扩展BaseAdapter实现progressBar下载
- Android之BaseAdapter的优雅实现
- android-BaseAdapter实现ListView增删改
- android列表框配合BaseAdapter实现列表
- Android --- BaseAdapter
- Android BaseAdapter
- android BaseAdapter
- Android BaseAdapter
- Android BaseAdapter
- Android BaseAdapter
- Android BaseAdapter
- HDU ACM 1083 Courses 二分图最大匹配
- Android5.0 来电流程图
- Java中变量赋值的问题
- iOS应用架构谈(二):View层的组织和调用方案(中)
- Android图片压缩质量参数Bitmap.Config RGB_565、 ARGB_8888的含义及用法
- Android: BaseAdapter 实现分页
- Painting video with GStreamer and Qt/QML or Gtk+ with overlay
- iOS应用架构谈(三):View层的组织和调用方案(下)
- wordpress hook总结
- Cordova调用Activity
- 找出二叉树所有根到叶子的路径,使得路径和为某一个指定的数字
- 一道SAT数学题及其解法
- PHP学习经历——(1)
- 如是中庸实例:SQL语句 将所有推荐人手机号改成对应手机号人的ID