返回顶部
首页 > 资讯 > 数据库 >如何使用Sqlite+RecyclerView+Dialog对数据进行增删改查
  • 494
分享到

如何使用Sqlite+RecyclerView+Dialog对数据进行增删改查

2024-04-02 19:04:59 494人浏览 薄情痞子
摘要

小编给大家分享一下如何使用sqlite+RecyclerView+Dialog对数据进行增删改查,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!原题目要求:(1)通过“添加联系人”按钮,跳转

小编给大家分享一下如何使用sqlite+RecyclerView+Dialog对数据进行增删改查,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

原题目要求:

(1)通过“添加联系人”按钮,跳转到“添加”信息的Dialog输入用户名、联系电话、地址选择性别,添加后显示到联系人列表。

(2)点击 联系人中的项,可以弹出Dialog,修改联系人信息或者删除联系人。

(3)可以通过输入姓名进行联系人信息的查找,并给出信息。

说明

1.此篇博文是代码部分,一些有关于实现的细节,感兴趣的同学可以看一下此篇博文

2.建议阅读《安卓编程权威指南3》,里面有关Sqlite的代码的格式值得学习,或者说,整本书的代码风格都是值得学习的

3.我会持续更新我的作业,关注不迷路哈

效果图

代码

目录结构

这是我的目录结构,adapter包下是适配器,dao包下是访问数据库的接口和实现方法,database包下是一些有关数据库的类,dialog包下是自定义对话框,model包下是数据模型

添加依赖

由于使用了RecyclerView,所以得添加依赖

implementation 'com.Android.support:recyclerview-v7:28.0.0'

1

具体代码

1.User.java

public class User {

    private UUID id;

    private String name;

    private String phone;

    private String address;

    private int sex;

    public User() {

    }

    public UUID getId() {

        return id;

    }

    public void setId(UUID id) {

        this.id = id;

    }

    public String getName() {

        return name;

    }

    public void setName(String name) {

        this.name = name;

    }

    public String getPhone() {

        return phone;

    }

    public void setPhone(String phone) {

        this.phone = phone;

    }

    public String getAddress() {

        return address;

    }

    public void setAddress(String address) {

        this.address = address;

    }

    public int getSex() {

        return sex;

    }

    public void setSex(int sex) {

        this.sex = sex;

    }

    public User(UUID id, String name, String phone, String address, int sex) {

        this.id = id;

        this.name = name;

        this.phone = phone;

        this.address = address;

        this.sex = sex;

    }

    public User(String name, String phone, String address, int sex) {

        this.id =UUID.randomUUID();

        this.name = name;

        this.phone = phone;

        this.address = address;

        this.sex = sex;

    }

}

2.UserCursorWrapper.java

public class UserCursorWrapper extends CursorWrapper {

   

    public UserCursorWrapper(Cursor cursor) {

        super(cursor);

    }

    public User getUser(){

        //获取每行数据

        String uuidString = getString(getColumnIndex(UserDbSchema.UserTable.Columns.UUID));

        String name = getString(getColumnIndex(UserDbSchema.UserTable.Columns.NAME));

        String phone = getString(getColumnIndex(UserDbSchema.UserTable.Columns.PHONE));

        String address = getString(getColumnIndex(UserDbSchema.UserTable.Columns.ADDRESS));

        int sex = getInt(getColumnIndex(UserDbSchema.UserTable.Columns.SEX));

        return new User(UUID.fromString(uuidString),name,phone,address,sex);

    }

}

3.UserDbSchema.java

public class UserDbSchema {

    //利用内部类定义user表结构

    public static final class UserTable{

        //定义表名

        public static final String TABLE_NAME = "user";

        //定义数据表字段

        public static final class Columns{

            public static final String UUID = "uuid";

            public static final String NAME = "name";

            public static final String PHONE = "phone";

            public static final String ADDRESS = "address";

            public static final String SEX = "sex";

        }

    }

}

4.UserSqlHelper.java

public class UserSqlHelper extends SQLiteOpenHelper {

    private static final int VERSION = 1;//定义版本

    private static final String DATABASE_NAME = "course21DataBase";

    public UserSqlHelper(Context context) {

        super(context, DATABASE_NAME, null, VERSION);

    }

    @Override

    public void onCreate(SQLiteDatabase db) {

       

        db.execSQL("create table "+ UserDbSchema.UserTable.TABLE_NAME+

                "("+"_id integer primary key autoincrement,"+

                UserDbSchema.UserTable.Columns.UUID+","+

                UserDbSchema.UserTable.Columns.NAME+","+

                UserDbSchema.UserTable.Columns.PHONE+","+

                UserDbSchema.UserTable.Columns.ADDRESS+","+

                UserDbSchema.UserTable.Columns.SEX+")"

        );

    }

    @Override

    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

        //不更新数据库

    }

}

5.IUserDao.java

public interface IUserDao {

   

    ArrayList<User> getAllUser();

   

    User getUserByName(String name);

   

    void addUser(User user);

   

    void updateUser(User user);

   

    void deleteUser(User user);

}

6.UserDao.java

public class UserDao implements IUserDao{

    private static UserDao sUserDao;

    private Context mContext;

    private SQLiteDatabase mDatabase;

    public UserDao(Context context) {

        mContext = context.getApplicationContext();

        mDatabase = new UserSqlHelper(mContext).getWritableDatabase();//此时数据库才是可写的

    }

   

    public static UserDao getUserDao(Context context){

        if (sUserDao == null){

            sUserDao = new UserDao(context);

        }

        return sUserDao;

    }

   

    @Override

    public ArrayList<User> getAllUser() {

        ArrayList<User> users = new ArrayList<>();

        UserCursorWrapper cursorWrapper = queryUsers(null,null);

        try {

            cursorWrapper.moveToFirst();

            while (!cursorWrapper.isAfterLast()){

                users.add(cursorWrapper.getUser());

                cursorWrapper.moveToNext();

            }

        } finally {

            cursorWrapper.close();

        }

        return users;

    }

   

    @Override

    public User getUserByName(String name) {

        //定义查询条件

        String whereClause = UserDbSchema.UserTable.Columns.NAME + " = ?";

        String [] whereArgs = new String[]{ name };

        UserCursorWrapper cursorWrapper = queryUsers(whereClause,whereArgs);

        try {

            //查询失败

            if (cursorWrapper.getCount() == 0){

                return null;

            }

            cursorWrapper.moveToFirst();

            return cursorWrapper.getUser();

        } finally {

            //关闭

            cursorWrapper.close();

        }

    }

   

    @Override

    public void addUser(User user) {

        //防止传入空值

        if (user!=null){

            ContentValues values = getContentValues(user);

            //插入数据

            mDatabase.insert(UserDbSchema.UserTable.TABLE_NAME,null,values);

        }

    }

   

    @Override

    public void updateUser(User user) {

        String uuidString = user.getId().toString();

        ContentValues values = getContentValues(user);

        mDatabase.update(UserDbSchema.UserTable.TABLE_NAME,

                values,

                UserDbSchema.UserTable.Columns.UUID+" = ? ",

                new String[] { uuidString });

    }

   

    @Override

    public void deleteUser(User user) {

        String uuidString = user.getId().toString();

        mDatabase.delete(UserDbSchema.UserTable.TABLE_NAME,

                UserDbSchema.UserTable.Columns.UUID+" = ? ",

                new String[] { uuidString });

    }

    //私有方法,返回一个ContentValues对象

    private ContentValues getContentValues(User user){

        ContentValues values = new ContentValues();

        //添加键值对

        values.put(UserDbSchema.UserTable.Columns.UUID,user.getId().toString());

        values.put(UserDbSchema.UserTable.Columns.NAME,user.getName());

        values.put(UserDbSchema.UserTable.Columns.PHONE,user.getPhone());

        values.put(UserDbSchema.UserTable.Columns.ADDRESS,user.getAddress());

        values.put(UserDbSchema.UserTable.Columns.SEX,user.getSex());

        return values;

    }

   

    private UserCursorWrapper queryUsers(String whereClause,String [] whereArgs){

        Cursor cursor = mDatabase.query(

                UserDbSchema.UserTable.TABLE_NAME,

                null,

                whereClause,

                whereArgs,

                null,

                null,

                null

        );

        return new UserCursorWrapper(cursor);

    }

}

7.UserAdapter.java

public class UserAdapter extends RecyclerView.Adapter<UserAdapter.ViewHolder>{

    private ArrayList<User> mUsers;

    private Context mContext;//上下文对象

    private LayoutInflater mInflater;

    private DialogListener mListener = new DialogListener() {

        @Override

        public void sendMessage() {

            updateView();

        }

    };

    public UserAdapter(Context context,ArrayList<User> users) {

        mUsers = users;

        mContext = context;

        mInflater = LayoutInflater.from(mContext);

    }

    @NonNull

    @Override

    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

        View view = mInflater.inflate(R.layout.info_item, parent, false);

        ViewHolder holder = new ViewHolder(view);

        return holder;

    }

    @Override

    public void onBindViewHolder(@NonNull ViewHolder holder,int position) {

//        mPosition = position;

        final User user = mUsers.get(position);

        //性别决定照片

        holder.mImageView.setImageResource(user.getSex()==1?R.drawable.boy:R.drawable.girl);

        holder.mTextViewPhone.setText("电话: "+user.getPhone());

        holder.mTextViewName.setText(user.getName());

        holder.mTextViewAddress.setText("地址: "+user.getAddress());

        //点击之后弹出一个对话框

        holder.itemView.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                UpdateDialog dialog = new UpdateDialog(mContext,user,mListener);

                dialog.show();

            }

        });

    }

    public void updateView(){

        mUsers =  UserDao.getUserDao(mContext).getAllUser();

        notifyDataSetChanged();

    }

    @Override

    public int getItemCount() {

        return mUsers.size();

    }

    class ViewHolder extends RecyclerView.ViewHolder{

        public ImageView mImageView;

        public TextView mTextViewName,mTextViewAddress,mTextViewPhone;

        public ViewHolder(@NonNull View itemView) {

            super(itemView);

            mImageView = itemView.findViewById(R.id.info_image);

            mTextViewName = itemView.findViewById(R.id.info_name);

            mTextViewAddress = itemView.findViewById(R.id.info_address);

            mTextViewPhone = itemView.findViewById(R.id.info_phone);

        }

    }

}

8.ADDDialog.java

public class AddDialog extends Dialog {

    private EditText mEditTextName,mEditTextAddress,mEditTextPhone;

    private Button mButtonAdd,mButtonCancel;

    private RadioGroup mRadioGroup;

    private int sex = 1;//性别

    private Context mContext;

    private DialogListener mListener;

    public AddDialog(@NonNull Context context, DialogListener listener) {

        super(context);

        this.mContext = context;

        this.mListener = listener;

    }

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.add_dialog_layout);

        initView();

        mRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {

            @Override

            public void onCheckedChanged(RadioGroup group, int checkedId) {

                switch (checkedId){

                    case R.id.add_radio_sex_boy:

                        sex = 1;

                        break;

                    case R.id.add_radio_sex_girl:

                        sex = 0;

                        break;

                }

            }

        });

        mButtonCancel.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                dismiss();

            }

        });

        mButtonAdd.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                String name = mEditTextName.getText().toString();

                String address = mEditTextAddress.getText().toString();

                String phone = mEditTextPhone.getText().toString();

                User user = new User(name,phone,address,sex);

                UserDao.getUserDao(mContext).addUser(user);

                mListener.sendMessage();

                dismiss();

            }

        });

        setCanceledOnTouchOutside(false);

    }

    //初始化界面

    private void initView(){

        mEditTextName = findViewById(R.id.edit_add_name);

        mEditTextAddress = findViewById(R.id.edit_add_address);

        mEditTextPhone = findViewById(R.id.edit_add_phone);

        mButtonAdd = findViewById(R.id.button_add_add);

        mButtonCancel = findViewById(R.id.button_add_cancel);

        mRadioGroup = findViewById(R.id.add_radio_sex);

    }

}

9.AddDialog对应布局 add_dialog_layout.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="Http://schemas.android.com/apk/res/android"

    android:orientation="vertical" android:layout_width="250dp"

    android:layout_height="400dp"

    android:background="#FDF5F5">

    <RelativeLayout

        android:layout_width="match_parent"

        android:layout_height="80dp">

        <TextView

            android:layout_centerInParent="true"

            android:textSize="20dp"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:text="添加联系人"/>

    </RelativeLayout>

    <View

        android:layout_width="match_parent"

        android:layout_height="1dp"

        android:background="#ccc"

        android:layout_marginLeft="10dp"

        android:layout_marginRight="10dp"/>

    <RelativeLayout

        android:layout_width="match_parent"

        android:layout_height="0dp"

        android:layout_weight="1">

        <LinearLayout

            android:layout_centerInParent="true"

            android:background="#E2E7FC"

            android:layout_width="180dp"

            android:layout_height="200dp"

            android:orientation="vertical">

            <LinearLayout

                android:layout_width="match_parent"

                android:layout_height="0dp"

                android:layout_weight="1">

                <TextView

                    android:text="姓名:"

                    android:layout_marginLeft="10dp"

                    android:layout_gravity="center"

                    android:layout_width="wrap_content"

                    android:layout_height="wrap_content"/>

                <EditText

                    android:id="@+id/edit_add_name"

                    android:layout_width="0dp"

                    android:layout_weight="1"

                    android:layout_height="match_parent"

                    android:textSize="12dp"

                    android:hint="请输入..."/>

            </LinearLayout>

            <LinearLayout

                android:layout_width="match_parent"

                android:layout_height="0dp"

                android:layout_weight="1">

                <TextView

                    android:text="性别:"

                    android:layout_marginLeft="10dp"

                    android:layout_gravity="center"

                    android:layout_width="wrap_content"

                    android:layout_height="wrap_content"/>

                <RadioGroup

                    android:id="@+id/add_radio_sex"

                    android:layout_width="wrap_content"

                    android:layout_height="wrap_content"

                    android:layout_gravity="center"

                    android:orientation="horizontal" >

                    <RadioButton

                        android:id="@+id/add_radio_sex_boy"

                        android:layout_width="wrap_content"

                        android:layout_height="wrap_content"

                        android:checked="true"

                        android:text="男" />

                    <RadioButton

                        android:id="@+id/add_radio_sex_girl"

                        android:layout_width="wrap_content"

                        android:layout_height="wrap_content"

                        android:text="女" />

                </RadioGroup>

            </LinearLayout>

            <LinearLayout

                android:layout_width="match_parent"

                android:layout_height="0dp"

                android:layout_weight="1">

                <TextView

                    android:text="电话:"

                    android:layout_marginLeft="10dp"

                    android:layout_gravity="center"

                    android:layout_width="wrap_content"

                    android:layout_height="wrap_content"/>

                <EditText

                    android:id="@+id/edit_add_phone"

                    android:layout_width="0dp"

                    android:layout_weight="1"

                    android:layout_height="match_parent"

                    android:textSize="12dp"

                    android:hint="请输入..."/>

            </LinearLayout>

            <LinearLayout

                android:layout_width="match_parent"

                android:layout_height="0dp"

                android:layout_weight="1">

                <TextView

                    android:text="地址:"

                    android:layout_marginLeft="10dp"

                    android:layout_gravity="center"

                    android:layout_width="wrap_content"

                    android:layout_height="wrap_content"/>

                <EditText

                    android:id="@+id/edit_add_address"

                    android:layout_width="0dp"

                    android:layout_weight="1"

                    android:layout_height="match_parent"

                    android:textSize="12dp"

                    android:hint="请输入..."/>

            </LinearLayout>

        </LinearLayout>

    </RelativeLayout>

    <View

        android:layout_width="match_parent"

        android:layout_height="1dp"

        android:background="#ccc"

        android:layout_marginLeft="10dp"

        android:layout_marginRight="10dp"/>

    <LinearLayout

        android:layout_width="match_parent"

        android:layout_height="50dp">

        <Button

            android:id="@+id/button_add_add"

            android:textSize="12dp"

            android:layout_width="0dp"

            android:layout_gravity="center"

            android:layout_weight="3"

            android:layout_height="40dp"

            android:text="添加"/>

        <TextView

            android:layout_width="0dp"

            android:layout_weight="1"

            android:layout_height="match_parent"/>

        <Button

            android:id="@+id/button_add_cancel"

            android:text="取消"

            android:layout_width="0dp"

            android:layout_weight="3"

            android:layout_height="40dp"

            android:layout_gravity="center"

            android:textSize="12dp"/>

    </LinearLayout>

</LinearLayout>

10. UpdateDialog.java

public class UpdateDialog extends Dialog {

    public User mUser;//弹框需要展示的信息

    private EditText mEditTextName,mEditTextAddress,mEditTextPhone;

    private Button mButtonUpdate,mButtonDelete,mButtonCancel;

    private RadioGroup mRadioGroup;

    private int sex;

    private ImageView mImageView;

    private DialogListener mListener;

    private Context mContext;

    public UpdateDialog(@NonNull Context context,User user, DialogListener listener) {

        super(context);

        this.mUser = user;

        this.mContext = context;

        this.mListener = listener;

    }

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.update_dialog_layout);

        initView();

        mRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {

            @Override

            public void onCheckedChanged(RadioGroup group, int checkedId) {

                switch (checkedId){

                    case R.id.update_radio_sex_boy:

                        sex = 1;

                        break;

                    case R.id.update_radio_sex_girl:

                        sex = 0;

                        break;

                }

            }

        });

        //删除按钮操作

        mButtonDelete.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                UserDao.getUserDao(mContext).deleteUser(mUser);

                mListener.sendMessage();

                dismiss();

            }

        });

        mButtonCancel.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                dismiss();

            }

        });

        mButtonUpdate.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

//                tag = 2;

                String name = mEditTextName.getText().toString();

                String address = mEditTextAddress.getText().toString();

                String phone = mEditTextPhone.getText().toString();

                User user = new User(mUser.getId(),name,phone,address,sex);

                UserDao.getUserDao(mContext).updateUser(user);

                mListener.sendMessage();

                dismiss();

            }

        });

        setCanceledOnTouchOutside(false);

    }

    //初始化界面

    private void initView(){

        mEditTextName = findViewById(R.id.edit_update_name);

        mEditTextAddress = findViewById(R.id.edit_update_address);

        mEditTextPhone = findViewById(R.id.edit_update_phone);

        mButtonUpdate = findViewById(R.id.button_update_update);

        mButtonCancel = findViewById(R.id.button_update_cancel);

        mButtonDelete = findViewById(R.id.button_update_delete);

        mRadioGroup = findViewById(R.id.update_radio_sex);

        mImageView = findViewById(R.id.image_update);

        sex = mUser.getSex();

        //初始化内容

        mRadioGroup.check(mUser.getSex()==1?R.id.update_radio_sex_boy:R.id.update_radio_sex_girl);

        mEditTextName.setText(mUser.getName());

        mEditTextPhone.setText(mUser.getPhone());

        mEditTextAddress.setText(mUser.getAddress());

        mImageView.setImageResource(mUser.getSex()==1?R.drawable.boy:R.drawable.girl);

    }

}

11. UpdateDialog对应布局 update_dialog_layout.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:orientation="vertical" android:layout_width="250dp"

    android:layout_height="400dp"

    android:background="#FDF5F5">

    <RelativeLayout

        android:layout_width="match_parent"

        android:layout_height="80dp">

        <ImageView

            android:id="@+id/image_update"

            android:src="@drawable/girl"

            android:layout_centerInParent="true"

            android:layout_width="60dp"

            android:layout_height="60dp"/>

    </RelativeLayout>

    <View

        android:layout_width="match_parent"

        android:layout_height="1dp"

        android:background="#ccc"

        android:layout_marginLeft="10dp"

        android:layout_marginRight="10dp"/>

    <RelativeLayout

        android:layout_width="match_parent"

        android:layout_height="0dp"

        android:layout_weight="1">

        <LinearLayout

            android:layout_centerInParent="true"

            android:background="#E2E7FC"

            android:layout_width="180dp"

            android:layout_height="200dp"

            android:orientation="vertical">

            <LinearLayout

                android:layout_width="match_parent"

                android:layout_height="0dp"

                android:layout_weight="1">

                <TextView

                    android:text="姓名:"

                    android:layout_marginLeft="10dp"

                    android:layout_gravity="center"

                    android:layout_width="wrap_content"

                    android:layout_height="wrap_content"/>

                <EditText

                    android:id="@+id/edit_update_name"

                    android:layout_width="0dp"

                    android:layout_weight="1"

                    android:layout_height="match_parent"

                    android:textSize="12dp"/>

            </LinearLayout>

            <LinearLayout

                android:layout_width="match_parent"

                android:layout_height="0dp"

                android:layout_weight="1">

                <TextView

                    android:text="性别:"

                    android:layout_marginLeft="10dp"

                    android:layout_gravity="center"

                    android:layout_width="wrap_content"

                    android:layout_height="wrap_content"/>

                <RadioGroup

                    android:id="@+id/update_radio_sex"

                    android:layout_width="wrap_content"

                    android:layout_height="wrap_content"

                    android:layout_gravity="center"

                    android:orientation="horizontal" >

                    <RadioButton

                        android:id="@+id/update_radio_sex_boy"

                        android:layout_width="wrap_content"

                        android:layout_height="wrap_content"

                        android:checked="true"

                        android:text="男" />

                    <RadioButton

                        android:id="@+id/update_radio_sex_girl"

                        android:layout_width="wrap_content"

                        android:layout_height="wrap_content"

                        android:text="女" />

                </RadioGroup>

            </LinearLayout>

            <LinearLayout

                android:layout_width="match_parent"

                android:layout_height="0dp"

                android:layout_weight="1">

                <TextView

                    android:text="电话:"

                    android:layout_marginLeft="10dp"

                    android:layout_gravity="center"

                    android:layout_width="wrap_content"

                    android:layout_height="wrap_content"/>

                <EditText

                    android:id="@+id/edit_update_phone"

                    android:layout_width="0dp"

                    android:layout_weight="1"

                    android:layout_height="match_parent"

                    android:textSize="12dp"/>

            </LinearLayout>

            <LinearLayout

                android:layout_width="match_parent"

                android:layout_height="0dp"

                android:layout_weight="1">

                <TextView

                    android:text="地址:"

                    android:layout_marginLeft="10dp"

                    android:layout_gravity="center"

                    android:layout_width="wrap_content"

                    android:layout_height="wrap_content"/>

                <EditText

                    android:id="@+id/edit_update_address"

                    android:layout_width="0dp"

                    android:layout_weight="1"

                    android:layout_height="match_parent"

                    android:textSize="12dp"/>

            </LinearLayout>

        </LinearLayout>

    </RelativeLayout>

    <View

        android:layout_width="match_parent"

        android:layout_height="1dp"

        android:background="#ccc"

        android:layout_marginLeft="10dp"

        android:layout_marginRight="10dp"/>

    <LinearLayout

        android:layout_width="match_parent"

        android:layout_height="50dp">

        <Button

            android:id="@+id/button_update_delete"

            android:textSize="12dp"

            android:layout_width="0dp"

            android:layout_gravity="center"

            android:layout_weight="3"

            android:layout_height="40dp"

            android:text="删除"/>

        <TextView

            android:layout_width="0dp"

            android:layout_weight="1"

            android:layout_height="match_parent"/>

        <Button

            android:id="@+id/button_update_update"

            android:layout_width="0dp"

            android:layout_weight="3"

            android:layout_height="40dp"

            android:layout_gravity="center"

            android:text="修改"

            android:textSize="12dp"/>

        <TextView

            android:layout_width="0dp"

            android:layout_weight="1"

            android:layout_height="match_parent"/>

        <Button

            android:id="@+id/button_update_cancel"

            android:text="取消"

            android:layout_width="0dp"

            android:layout_weight="3"

            android:layout_height="40dp"

            android:layout_gravity="center"

            android:textSize="12dp"/>

    </LinearLayout>

</LinearLayout>

12 DialogListener.java

public interface DialogListener {

    void sendMessage();

}

1

2

3

13.MainActivity.java

public class MainActivity extends AppCompatActivity{

    private Button mButtonAdd;

    private RecyclerView mRecyclerView;

    private UserAdapter mAdapter;

    private ArrayList<User> mUsers;

    private ImageView mImageView;

    private EditText mEditText;

    private DialogListener mListener = new DialogListener() {

        @Override

        public void sendMessage() {

            mAdapter.updateView();

        }

    };

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        getSupportActionBar().hide();

        init();

        initData();

        mRecyclerView.setLayoutManager(new LinearLayoutManager(MainActivity.this));

        mAdapter = new UserAdapter(MainActivity.this,mUsers);

        mRecyclerView.setAdapter(mAdapter);

        mButtonAdd.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                new AddDialog(MainActivity.this,mListener).show();

            }

        });

        //点击查找

        mImageView.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                String name = mEditText.getText().toString();

                if (name.equals("")){

                    Toast.makeText(MainActivity.this,"查询名字不允许为空",Toast.LENGTH_SHORT).show();

                }else {

                    User user = UserDao.getUserDao(MainActivity.this).getUserByName(name);

                    UpdateDialog dialog = new UpdateDialog(MainActivity.this,user,mListener);

                    dialog.show();

                }

            }

        });

    }

    private void init(){

        mButtonAdd = findViewById(R.id.main_button_add);

        mRecyclerView = findViewById(R.id.main_recycler_view);

        mEditText = findViewById(R.id.main_edit_name);

        mImageView = findViewById(R.id.main_image_find);

    }

    void initData(){

        mUsers = UserDao.getUserDao(MainActivity.this).getAllUser();

    }

}

14.主布局文件activity_main.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical">

    <LinearLayout

        android:layout_width="match_parent"

        android:layout_height="60dp">

    <EditText

        android:id="@+id/main_edit_name"

        android:layout_gravity="bottom"

        android:layout_width="0dp"

        android:layout_height="wrap_content"

        android:layout_weight="3"

        android:hint="请输入需要查询的名字"

        android:layout_marginLeft="20dp"

        android:layout_marginRight="10dp"/>

        <RelativeLayout

            android:layout_width="0dp"

            android:layout_height="match_parent"

            android:layout_weight="1">

            <ImageView

                android:id="@+id/main_image_find"

                android:src="@drawable/find"

                android:layout_width="35dp"

                android:layout_height="35dp"

                android:layout_centerInParent="true"/>

        </RelativeLayout>

    </LinearLayout>

    <androidx.recyclerview.widget.RecyclerView

        android:id="@+id/main_recycler_view"

        android:layout_width="match_parent"

        android:layout_height="0dp"

        android:layout_weight="1"/>

    <Button

        android:id="@+id/main_button_add"

        android:layout_width="match_parent"

        android:layout_height="40dp"

        android:text="添加联系人"/>

</LinearLayout>

15.子布局文件 info_item.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:orientation="vertical" android:layout_width="match_parent"

    android:layout_height="100dp">

    <LinearLayout

        android:layout_width="match_parent"

        android:layout_height="0dp"

        android:layout_weight="1">

        <RelativeLayout

            android:background="#F8F4D3"

            android:layout_width="80dp"

            android:layout_height="match_parent">

            <ImageView

                android:id="@+id/info_image"

                android:layout_centerInParent="true"

                android:src="@drawable/girl"

                android:layout_width="60dp"

                android:layout_height="60dp"/>

        </RelativeLayout>

        <LinearLayout

            android:layout_width="0dp"

            android:layout_weight="1"

            android:background="#E1F5EC"

            android:layout_height="match_parent"

            android:orientation="vertical">

            <LinearLayout

                android:layout_width="match_parent"

                android:layout_height="0dp"

                android:layout_weight="2">

                <TextView

                    android:id="@+id/info_name"

                    android:layout_width="wrap_content"

                    android:layout_height="wrap_content"

                    android:layout_gravity="center"

                    android:layout_marginLeft="10dp"

                    android:text="大青儿"

                    android:textSize="25dp"

                    android:textColor="#333"/>

            </LinearLayout>

            <LinearLayout

                android:layout_width="match_parent"

                android:layout_height="0dp"

                android:layout_weight="1">

                <TextView

                    android:id="@+id/info_phone"

                    android:layout_gravity="center"

                    android:text="电话:13222240503"

                    android:layout_marginLeft="10dp"

                    android:layout_width="wrap_content"

                    android:layout_height="wrap_content"/>

                <TextView

                    android:id="@+id/info_address"

                    android:layout_gravity="center"

                    android:text="地址:江苏苏州"

                    android:layout_marginLeft="10dp"

                    android:layout_width="wrap_content"

                    android:layout_height="wrap_content"/>

            </LinearLayout>

        </LinearLayout>

    </LinearLayout>

    <View

        android:layout_width="match_parent"

        android:layout_height="1dp"

        android:background="#666"/>

</LinearLayout>

看完了这篇文章,相信你对“如何使用Sqlite+RecyclerView+Dialog对数据进行增删改查”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网数据库频道,感谢各位的阅读!

您可能感兴趣的文档:

--结束END--

本文标题: 如何使用Sqlite+RecyclerView+Dialog对数据进行增删改查

本文链接: https://lsjlt.com/news/69961.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何使用Sqlite+RecyclerView+Dialog对数据进行增删改查
    小编给大家分享一下如何使用Sqlite+RecyclerView+Dialog对数据进行增删改查,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!原题目要求:(1)通过“添加联系人”按钮,跳转...
    99+
    2024-04-02
  • ASP.NET Core使用EF SQLite对数据库增删改查
    目录1新建ASP.NETCoreMVC应用1.1新建MVC应用1.2引入NuGet包引入教程依赖项2新建模型和上下文2.1新建模型类2.2新建上下文步骤1步骤2步骤33配置服务1直接...
    99+
    2024-04-02
  • 使用mybatis怎么对数据库进行增删改查
    这篇文章将为大家详细讲解有关使用mybatis怎么对数据库进行增删改查,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。select一个select 元素非常简单。例如:<!--...
    99+
    2023-05-31
    mybatis
  • 使用Mybatis如何实现对数据库进行增删改查操作
    本篇文章为大家展示了使用Mybatis如何实现对数据库进行增删改查操作,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。什么是 MyBatis?MyBatis 是支持普通 SQL 查询,存储过程和高级映...
    99+
    2023-05-31
    mybatis 增删改查 数据库
  • 使用Hibernate如何实现对数据库进行增删改查操作
    使用Hibernate如何实现对数据库进行增删改查操作?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Hibernate对数据删除操作删除User表中个一条数据,是需要更具U...
    99+
    2023-05-31
    hibernate 数据库 增删改查
  • ASP.NET Core怎么使用EF SQLite对数据库增删改查
    这篇文章将为大家详细讲解有关ASP.NET Core怎么使用EF SQLite对数据库增删改查,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1 新建ASP.NET Cor...
    99+
    2023-06-26
  • java怎么对数据库进行增删改查
    在Java中进行数据库的增删改查操作,通常需要使用JDBC(Java Database Connectivity)来实现。以下是一个...
    99+
    2023-08-08
    java 数据库
  • 在Android开发中怎么对SQLite数据库进行增删改查操作
    在Android开发中怎么对SQLite数据库进行增删改查操作?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。      一.创建一个自定义数据库&...
    99+
    2023-05-31
    sqlite android lite
  • mysql如何进行表数据的增删改查
    这篇文章主要介绍mysql如何进行表数据的增删改查,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在mysql中,可以使用SELECT语句进行表数据的查询,使用INSERT语句...
    99+
    2024-04-02
  • 怎么使用Node.js进行JSON数据的增删改查
    这篇文章主要介绍“怎么使用Node.js进行JSON数据的增删改查”,在日常操作中,相信很多人在怎么使用Node.js进行JSON数据的增删改查问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使用Node....
    99+
    2023-07-05
  • C#如何操作SQLite实现数据的增删改查
    这篇文章主要介绍了C#如何操作SQLite实现数据的增删改查,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。简介SQLite是一个轻量级、跨平台的关系型数据库,在小型项目中,方...
    99+
    2023-06-28
  • php如何使用mongodb进行增删查改操作
    本文小编为大家详细介绍“php如何使用mongodb进行增删查改操作”,内容详细,步骤清晰,细节处理妥当,希望这篇“php如何使用mongodb进行增删查改操作”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、M...
    99+
    2023-07-05
  • 利用hibernate怎么对数据库进行增删改查操作
    本篇文章给大家分享的是有关利用hibernate怎么对数据库进行增删改查操作,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Hibernate对数据删除操作删除User表中个一条...
    99+
    2023-05-31
    hibernate
  • 利用mybatis怎么对数据库进行增删改查操作
    这篇文章将为大家详细讲解有关利用mybatis怎么对数据库进行增删改查操作,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。所需要用到的其他工具或技术:项目管理工具 : Maven测试运行工具 ...
    99+
    2023-05-31
    mybatis
  • 如何使用Jorm增删查改数据库
    这篇文章主要介绍“如何使用Jorm增删查改数据库”,在日常操作中,相信很多人在如何使用Jorm增删查改数据库问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用Jorm增删...
    99+
    2024-04-02
  • Android SQLite数据库增删改查操作的使用详解
    一、使用嵌入式关系型SQLite数据库存储数据 在Android平台上,集成了一个嵌入式关系型数据库——SQLite,SQLite3支持NULL、INTEGER、REAL(浮点...
    99+
    2022-06-06
    sqlite数据库 SQLite Android
  • Android使用SQLite数据库实现基本的增删改查
    目录 一、创建activity_main和MainActivity界面 二、实现查询/删除功能创建activity_delete和DeleteActivity 三、实现添加功能创建activity_add和AddActivity  四、实...
    99+
    2023-09-15
    数据库 sqlite android java
  • 使用JavaScript 怎么对MongoDB进行增删查改操作
    本篇文章给大家分享的是有关使用JavaScript 怎么对MongoDB进行增删查改操作,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Inse...
    99+
    2024-04-02
  • 使用python怎么对MongoDB进行增删改查操作
    这篇文章将为大家详细讲解有关使用python怎么对MongoDB进行增删改查操作,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1、说明MongoDB使用查看数据的功能时非常方便。能立即看到增...
    99+
    2023-06-14
  • nodejs框架如何对json文件进行增删改查
    这篇文章主要为大家展示了“nodejs框架如何对json文件进行增删改查”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“nodejs框架如何对json文件进行增删...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作