listview中数据如果要实时读写,需要每次操作后都要查询数据库吗

总结一下填充listview的步骤:

1:准备数据:先把要填充的数据从数据库中查询出来,放入一个list存放

2:设置listview中item的格式,新建一个xml文件,自定义布局

3:新建一个adapter类继承baseadapter,需要重写几个方法

@Override
		public int getCount() {
			System.out.println("getCout执行");
			return timelist.size();
		}
这个方法每次滑动调用,返回list的大小就行

@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			System.out.println("getView执行");
			View view = null;
			//converView 系统缓存
			if(convertView == null){
				//把布局文件填充成View对象
				view = View.inflate(MainActivity.this, R.layout.item, null);
			}
			
			else{
				view = convertView;
			}
			//findViewByid只能在当前布局文件中找
			TextView tv_name = (TextView) view.findViewById(R.id.tv_id);
			togglebutton= (ToggleButton) view.findViewById(R.id.toggleButton_id);
			tv_name.setText(timelist.get(position).getHour()
					+":"+timelist.get(position).getMinute());
			System.out.println("选择开关状态:"+position+":"+timelist.get(position).getUserswitch());
			
			//这里和下面togglebuttond的onchangeLIstener冲突
			if(timelist.get(position).getUserswitch() == 0){
				togglebutton.setChecked(false);
				System.out.println(position+"关");
			}
			else{
				togglebutton.setChecked(true);
				System.out.println(position+"开");
			}
			togglebutton.setOnClickListener(new myToggleButtOnClickListener(position));

			return view;
		}

最重要的方法,每出现一个新的item时系统就会调用该方法,返回一个view对象用于显示在界面, convertView用于复用缓存(重要),其中在找item中的控件id时要用view.findViewById();

@Override
		public Object getItem(int arg0) {
			return null;
		}

		@Override
		public long getItemId(int position) {
			return 0;
		}
这两个方法只要重新一下就可以

4:控制显示的适配器写好后就可以让listview显示在界面了,用listview.setAdapter();

存在一个问题

就是如果在listview中需要显示一些状态的比如togglebutton,在显示按钮的状态时先查选数据库,再根据数据设置状态。如果你点击按钮改变状态时更改数据库内容,此时你的list中还是上次查询的数据,如果你把这个item滑出界面在滑进来时,按钮状态又回到之前的状态,想到的最简单的解决方法是,每次滑动之前就查询数据库,把数据放到list中
这样感觉太消耗资源
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值