5分钟轻松解决Android数据库访问,Cursor类的基础使用

相比于MySql等数据库,SqLite有它自己的工具Cursor,一次获取一行数据(在数据库中,一行包含了一个主键约束的索引的全部内容)。

Cursor就像高中物理课上的游标卡尺

使用游标来读数据库一般分两步:(就像在游标卡尺上读数)

1.横向的获取列名所对应的位置(储存在Cursor中的位置),getColumnIndex方法

2.通过得到的位置,getString(index) or getInt(index)

3.也可以做循环输出
while (cursor.moveNex()t){
//move方法 返回一个布尔值,当到达最后一行时,返回false
}

下面结合的例子Cursor与RecyclerLayout的结合使用,大部分代码无难度,主要是对RecyclerView的适配器不熟悉,造成加载数据的部分花了很多coding时间。

首先是cursor中数据的读取

 protected void bind(int position){
           if(!cursor.moveToPosition(position))
               return;
               //若选中位置没有数据,返回,其实还是一个安全保护,防止程序意外崩溃
               int index;
               index=cursor.getColumnIndex(WaitlistContract.WaitlistEntry.COLUMN_GUEST_NAME);
               String guestName=cursor.getString(index);
               index=cursor.getColumnIndex(WaitlistContract.WaitlistEntry.COLUMN_TIMESTAMP);
               String time=cursor.getString(index);
               nameTextView.setText(time);
               partySizeTextView.setText(guestName);
        }

其中妙处在于,RecyclerView适配器的position刚好和cursor中的moveToPosition完美的结合起来了,不得不赞叹Google工程师的智慧。

 @Override
    public GuestViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
       //获取填充器
        LayoutInflater inflater = LayoutInflater.from(mContext);
        View view = inflater.inflate(R.layout.guest_list_item, parent, false);
        return new GuestViewHolder(view);
    }

    @Override
    public void onBindViewHolder(GuestViewHolder holder, int position) {
    //holder是ViewHolder实例
          holder.bind(position);
    }



    @Override
    public int getItemCount() {
        return cursor.getCount();
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值