ListView分页,上一页 下一页

    最近新的需求刚做完, 今天闲来无事, 利用下午的空闲时间 写了一个listView的分页加载demo,点击上一页和下一页的时候我加载出相应的数据, 以下是贴出的代码, 如果不足之处,希望大神指出,共同进步!!!!

public class MainActivity extends Activity implements OnClickListener {

	private ListView mListView;
	private Button btn_prev;
	private TextView tv_current;
	private Button btn_next;
	private String[] str ={"中国","美国","加拿大","小日本","棒子","朝鲜三胖","俄罗斯","米兰","刚果","巴西","印度阿三","英国","法国","意大利","葡萄牙","牙买加"
							,"拉斯维加斯","香港","台湾"};
	private int VIEW_COUNT = 5; //每页显示条目数
	private int index = 0;  //当前页数索引
	private List<Map<String,String>> listItem;
	private MyAdapter mAdapter;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		requestWindowFeature(getWindow().FEATURE_NO_TITLE);
		setContentView(R.layout.activity_main);
		initView();
		initDate();
		
		btn_prev.setOnClickListener(this);
		btn_next.setOnClickListener(this);
	}

	private void initView() {
		mListView = (ListView) findViewById(R.id.listview);
		btn_prev = (Button) findViewById(R.id.btn_prev);
		tv_current = (TextView) findViewById(R.id.tv_current);
		btn_next = (Button) findViewById(R.id.btn_next);
	}

	private void initDate() {
		listItem = getDate();
		mAdapter = new MyAdapter(this);
		mListView.setAdapter(mAdapter);
	}

	private List<Map<String, String>> getDate() {
		List<Map<String, String>> list = new ArrayList<Map<String, String>>();
		Map<String,String> map;
		for(int i =0; i<19;i++){
			map = new HashMap<String,String>();
			map.put("country","国家---"+str[i]);
			list.add(map);
		}
		return list;
	}
	
	class MyAdapter extends BaseAdapter{
		private Activity a;
		public MyAdapter(Activity a){
			this.a = a;
		}
		@Override
		public int getCount() {
			//表示前几页的总数 total
			int total = VIEW_COUNT*index;
			if(listItem.size() - total <VIEW_COUNT){
				return listItem.size()-total;
			}else{
				return VIEW_COUNT;
			}
		}

		@Override
		public Object getItem(int position) {
			return listItem.get(position);
		}

		@Override
		public long getItemId(int position) {
			return position;
		}

		
		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			ViewHolder holder;
			if(null != convertView){
				holder = (ViewHolder) convertView.getTag();
			}else{
				convertView = View.inflate(MainActivity.this, R.layout.item, null);
				holder = new ViewHolder();
				holder.textView = (TextView) convertView.findViewById(R.id.tv_item);
				convertView.setTag(holder);
			}
			holder.textView.setText(listItem.get(position+VIEW_COUNT*index).get("country"));
			return convertView;
		}
		
		class ViewHolder{
			 public TextView textView;
		}
	}

	@Override
	public void onClick(View v) {
		switch (v.getId()) {
		case R.id.btn_prev:
				if(index ==0){
					
				}else{
					index--;
					mAdapter.notifyDataSetChanged();
					tv_current.setText(index+1+"");
					checkButtonEnable();
				}
			break;
			
		case R.id.btn_next:
			index++;
			mAdapter.notifyDataSetChanged();
			tv_current.setText(index+1+"");
			checkButtonEnable();
			break;

		default:
			break;
		}
	}

	/**
	 * 检查 按钮是否能用
	 */
	private void checkButtonEnable() {
		if(index <= 0){
			btn_prev.setEnabled(false);
		}else{
			btn_prev.setEnabled(true);
		}
		
		if(listItem.size() - VIEW_COUNT*index <=VIEW_COUNT){
			btn_next.setEnabled(false);
		}else{
			btn_next.setEnabled(true);
		}
	}
}

 

转载于:https://my.oschina.net/fbf8866/blog/727910

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值