【Android】联系人列表

package com.example.todayapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

private MyDbHelper dbHelper;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        dbHelper=new MyDbHelper(this,"contact.db",null,1);

        SQLiteDatabase db=dbHelper.getWritableDatabase();

        Cursor cursor=db.rawQuery("select name,tel from contacts",null);
        while(cursor.moveToNext()){
            Log.d("test",cursor.getString(0));

            Toast.makeText(this,cursor.getString(0),Toast.LENGTH_SHORT).show();

            Toast.makeText(this, cursor.getCount()Toast.LENGTH_SHORT).show();
           
        }

    }




}

测试方法

  1. 界面SQL
  2. MYAdapter类
    package com.example.mycontacts;
    
    
    import android.database.Cursor;
    import android.database.sqlite.SQLiteDatabase;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.TextView;
    
    import androidx.annotation.NonNull;
    import androidx.recyclerview.widget.RecyclerView;
    
    //自定义ViewHolder类,用于记录每个数据项的View组件对象
    class MyViewHolder extends RecyclerView.ViewHolder {
        public TextView txtName;
        public MyViewHolder(@NonNull View itemView) {
            super(itemView);
        }
    }
    public class MyAdapter extends RecyclerView.Adapter<MyViewHolder> {
        private SQLiteDatabase db;
        private Cursor cursor;
        public MyAdapter(SQLiteDatabase db) {
            this.db = db;
            //执行sql语句,获取数据集
            cursor = db.rawQuery("select name, tel from contacts", null);
        }
    
        @NonNull
        @Override //实现创建每个数据项的View组件, 由一个MyViewHolder对象保存组件
        public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            TextView tv = new TextView(parent.getContext());
            MyViewHolder vh = new MyViewHolder(tv);
            vh.txtName = tv;
            return vh;
        }
    
        @Override //实现第positon个数据项的View组件设置属性。holder参数就是数据项对应的MyViewHolder对象
        public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
            cursor.moveToFirst(); //先移动到第0条记录
            cursor.move(position);//移动到第position条记录
            holder.txtName.setText(cursor.getString(0));
        }
    
        @Override //返回数据项的个数
        public int getItemCount() {
            return cursor.getCount();
        }
    }
    

3、MydbHelper类

package com.example.mycontacts;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

import androidx.annotation.Nullable;

public class MyDbHelper extends SQLiteOpenHelper {
    public MyDbHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }

    @Override //数据库创建时触发调用,通常只会触发一次
    public void onCreate(SQLiteDatabase db) {
        try {
            //创建数据表
            db.execSQL("create table if not exists contacts(name varchar, tel varchar);");
            //增加记录
            db.execSQL("insert into contacts values('李明', '1111111111');");
            db.execSQL("insert into contacts values('张三', '2222222222');");
            db.execSQL("insert into contacts values('王七', '3333333333');");
            db.execSQL("insert into contacts values('陈六', '4444444444');");
        }catch (Exception e) {
            Log.e("test", e.getMessage());
        }
    }

    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

    }
}
android:layout_gravity="center"居中
  1. 界面结果
  • 23
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值