Android之SqliteDatabase(MVP模式)实现用户登录注册功能

Android之SqliteDatabase(MVP模式)实现用户登录注册功能

用户登录以及注册功能的普遍使用就不用我说了,任何一款应用软件基本都具有登录和注册功能,今天通过前面的学习,我写了一个小demo,就是使用MVP模式写一个用户登录和注册的功能。有关MVP模式我就不做讲解了,通常来说很多实现的登录或者注册功能都是使用MVC的模式来实现的,今天我将采用MVP模式来实现这个小demo,主要是为了巩固数据库部分的知识点,然后让大家熟悉MVP这种模式,看看MVP模式的优势在哪里(其实MVP最主要的就是达到完全解耦,不同的层实现不同的功能,互不影响)。

案例的主要功能:
1. 用户登录
2. 用户注册

模拟场景:当用户点击登录按钮时,模式了一个延时3秒的操作,相当于从服务器获取用户登录信息,3秒后返回登录结果。注册也是一样

程序整体结构图:
这里写图片描述

老样子,主要功能在程序中注释

view层:

ViewInter.java

/**
 * view层所有的功能
 */
public interface ViewInter {
   
    //获取用户名
    String getName();

    //获取用户密码
    String getPass();

    //清除界面中编辑框里的名字
    void clearUserName();

    //清除界面中编辑框里的密码
    void clearUserPass();

    //显示进度条
    void showLoading();

    //隐藏进度条
    void hideLoading();

    /**
     * 提示用户登录或注册成功后的状态
     * @param user 用户信息
     * @param tag 表示登录或注册提示
     */
    void successHint(User user, String tag);

    /**
     * 提示用户登录或注册失败后的状态
     * @param user 用户信息
     * @param tag 表示登录或注册提示
     */
    void failHint(User user, String tag);

}

Login.java

public class Login extends AppCompatActivity implements ViewInter{
   

    private EditText mUserName;//用户名控件
    private EditText mUserPwd;//用户密码控件
    private Button mBtnLogin;//登录按钮
    private Button mBtnClear;//清除按钮
    private ProgressBar mProBar;//进度条
    private TextView mRegister;//点我注册控件
    private Presenter presenter;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        //初始化控件
        initView();
        //初始化事件
        event();
        //建立与presenter层的关系,创建presenter对象
        presenter = new Presenter(this, Login.this);
    }
    private void initView() {
        mUserName = (EditText) findViewById(R.id.user_name);
        mUserPwd = (EditText) findViewById(R.id.user_pwd);
        mBtnLogin = (Button) findViewById(R.id.btn_login);
        mBtnClear = (Button) findViewById(R.id.btn_clear);
        mProBar = (ProgressBar) findViewById(R.id.progressBar);
        mRegister = (TextView) findViewById(R.id.mRegister);
    }

    private void event() {
        /**
         * 登录响应事件
         */
        mBtnLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //告诉presenter层,我需要登录操作
                presenter.login();
            }
        });
        /**
         * 清除响应事件
         */
        mBtnClear.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                //告诉presenter层,我需要清除操作
                presenter.clear();
            }
        });

        /**
         * 点击注册响应事件,跳转到注册界面
         */
        mRegister.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                Intent intent = new Intent(Login.this,Register.class);
                startActivity(intent);
                finish();
            }
        });
    }

    @Override
    public String getName() {
        return mUserName.getText().toString();
    }

    @Override
    public String getPass() {
        return mUserPwd.getText().toString();
    }

    @Override
    public void clearUserName() {
        mUserName.setText("");
    }

    @Override
    public void clearUserPass() {
        mUserPwd.setText("");
    }

    @Override
    public void showLoading() {
        mProBar.setVisibility(View.VISIBLE);
    }

    @Override
    public void hideLoading() {
        mProBar.setVisibility(View.GONE);
    }

    @Override
    public void successHint(User user,String tag) {
        Toast.makeText(this,"用户" + user.getUserName() + tag + "成功",Toast.LENGTH_SHORT).show();
    }

    @Overrid
  • 6
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
要在基于Android的背单词App中实现用户登录注册功能,你可以按照以下步骤进行: 1. 设计用户界面:首先,你需要设计用户界面来收集用户登录注册信息。可以使用XML布局文件定义登录注册界面的UI元素,如EditText、Button等。 2. 创建数据库:你需要创建一个用于存储用户信息的数据库。可以使用Android提供的SQLite数据库来创建和管理用户表。在你的代码中创建一个继承自SQLiteOpenHelper的类,用于管理数据库的创建和版本升级。 3. 创建用户表:在数据库中创建一个用户表,用于存储用户登录注册信息。表中可以包含列如用户名、密码等字段。 ```java public class UserDbHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME = "user.db"; private static final int DATABASE_VERSION = 1; public UserDbHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { // 创建用户表 String createUserTable = "CREATE TABLE " + UserContract.UserEntry.TABLE_NAME + " (" + UserContract.UserEntry._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + UserContract.UserEntry.COLUMN_USERNAME + " TEXT NOT NULL," + UserContract.UserEntry.COLUMN_PASSWORD + " TEXT NOT NULL)"; db.execSQL(createUserTable); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // 处理数据库升级 } } ``` 4. 处理用户注册:在注册界面,当用户输入注册信息后,你需要将用户信息插入到用户表中。 ```java ContentValues values = new ContentValues(); values.put(UserContract.UserEntry.COLUMN_USERNAME, username); values.put(UserContract.UserEntry.COLUMN_PASSWORD, password); SQLiteDatabase db = dbHelper.getWritableDatabase(); long newRowId = db.insert(UserContract.UserEntry.TABLE_NAME, null, values); ``` 请将"username"和"password"替换为用户输入的用户名和密码。 5. 处理用户登录:在登录界面,当用户输入登录信息后,你需要查询用户表,验证用户登录信息是否正确。 ```java SQLiteDatabase db = dbHelper.getReadableDatabase(); String[] projection = { UserContract.UserEntry._ID, UserContract.UserEntry.COLUMN_USERNAME, UserContract.UserEntry.COLUMN_PASSWORD }; String selection = UserContract.UserEntry.COLUMN_USERNAME + " = ? AND " + UserContract.UserEntry.COLUMN_PASSWORD + " = ?"; String[] selectionArgs = {username, password}; Cursor cursor = db.query( UserContract.UserEntry.TABLE_NAME, projection, selection, selectionArgs, null, null, null ); if (cursor.moveToFirst()) { // 用户名和密码匹配,登录成功 long userId = cursor.getLong(cursor.getColumnIndex(UserContract.UserEntry._ID)); } else { // 用户名和密码不匹配,登录失败 } cursor.close(); ``` 请将"username"和"password"替换为用户输入的用户名和密码。 通过以上步骤,你就可以在你的背单词App中实现用户登录注册功能用户可以在对应的界面输入用户名和密码进行注册登录操作,并将用户信息存储在数据库中进行验证。希望对你有所帮助!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值