当前位置: 代码迷 >> Android >> Android: BaseAdapter 兑现分页
  详细解决方案

Android: BaseAdapter 兑现分页

热度:62   发布时间:2016-05-01 19:22:40.0
Android: BaseAdapter 实现分页

转:http://www.iteye.com/topic/1111847

?

 列表的显示需要三个元素: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"  />	<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;		}	}}
?
  相关解决方案