安卓作业----慕课移动应用开发作业21之使用Sqlite+RecyclerView+Dialog对数据进行增删改查

   日期:2020-05-21     浏览:142    评论:0    
核心提示:本篇使用Sqlite+RecyclerView+Dialog对数据进行增删改查同时这也是中国大学慕课移动终端应用开发的网课作业21原题目要求:(1)通过“添加联系人”按钮,跳转到“添加”信息的Dialog输入用户名、联系电话、地址选择性别,添加后显示到联系人列表。(2)点击 联系人中的项,可以弹出Dialog,修改联系人信息或者删除联系人。(3)可以通过输入姓名进行联系人信息的查找,并给出信息。说明1.此篇博文是代码部分,一些有关于实现的细节,感兴趣的同学可以看一下此篇博文2.建议阅读《安卓移动开发

本篇使用Sqlite+RecyclerView+Dialog对数据进行增删改查

同时这也是中国大学慕课移动终端应用开发的网课作业21

原题目要求:
(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.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();
}
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>

总结

如果有什么问题或改进方案,请私信联系我或者在评论区留言
码字不易,若有帮助,给个关注和赞呗

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服