Android学习笔记4||SharedPreferences存储和和数据库存储

SharedPreferences存储

SharedPreferences是使用键值对的方法存储的

1、将数据存储到sharedPreferences中
首先获取SharedPreferences.Editor对象,然后再可以向对象中添加3个不同类型的数据,最后再apply()方法调用

SharedPreferences.Editor editor = getSharedPreferences("data", MODE_PRIVATE).edit();
editor.putString("name", "Tom");
editor.putInt("age", 18);
editor.putBoolean("married", false);
editor.apply();

2、从SharedPreferences中读取数据
首先得到SharedPreferences对象,然后用get()方法,如读取字符串则getString(),读取布尔型则getBoolean()方法

SharedPreferences pref = getSharedPreferences("data", MODE_PRIVATE);
String name = pref.getString("name", "");
int age = pref.getInt("age", 0);
boolean married = pref.getBoolean("married",false);

数据库存储

LitePal学习笔记

配置LitePal
1、编辑app/build.grape文件,在dependencies添加如下内容:

implementation ‘org.litepal.guolindev:core:3.2.3’

2、右击app/src/main目录->new->Directory,创建一个assets目录,然后assets目录下再创建一个litepal.xml文件,如下内容:


<litepal>
    <dbname value ="BookStore"></dbname>

    <version value="1"></version>


    <list>
     
    </list>
</litepal>

注意:
最新版本的LitePal
每次修改类里的代码litepal.xml里的mapping class (java类)value都要加1
3、配置一下LitePalApplication,修改AndroidMainfest.xml中的代码

 android:name="org.litepal.LitePalApplication"

2、建表(创建数据)
实例的book类 (新建一个book类) LitePal.getDatabase()方法 创建数据库

public class Book extends LitePalSupport {

    private int id;

    private String author;

    private double price;

    private int pages;

    private String name;

    private String press;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public int getPages() {
        return pages;
    }

    public void setPages(int pages) {
        this.pages = pages;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String  getPress() {
        return press;
    }

    public void setPress(String press) {
        this.press = press;
    }

}

还要将book类添加到映射模型列表当中
修改litepal.xml,注意 value要加1

<litepal>
    <dbname value ="BookStore"></dbname>

    <version value="2"></version>

    <list>
        <mapping class="com.example.litepaltest.Book"></mapping>
    </list>
</litepal>

然后修改MainActivity中的代码
添加:LitePal.getDatabase(); //数据库自动完成创建

3、添加数据
book继承DataSupport类
book类的代码中:public class Book extends LitePalSupport
接着就可以在book中添加数据了,修改MainActivity中的代码 实现添加,最后save()保存

Book book = new Book();
book.setName("The Da Vinci Code");
book.setAuthor("Dan Brown");
book.setPages(454);
book.setPrice(16.96);
book.setPress("Unknow");
book.save();

4、更新数据
再添加新的数据然后再save()一次

5、删除数据
LitePal.deleteAll()方法
LitePal.deleteAll(Book.class, “price < ?”, “15”); //删除价格小于15的书

6、查找数据
LiST books = LitePal.findAll()方法
查询Book表中的第一条数据

Book firstBook = DataSupport.finfFirst(Book.class);

查询book表中的最后一条数据

Boook lastBook =  DataSuppport.findLast(Book.class);

select()方法用于指定查询哪几列的数据,比如查找name和author的数据

List<Book> books = DataSupport.select("name","author").find(Book.class);

where()方法用于指定查询的约束条件

List<Book> books = DataSupport.where("pages > ?","400").find(Book.class);

还有order()、limit()等方法

实现记住密码的功能

MainActivity

public class MainActivity extends AppCompatActivity {

    private SharedPreferences pref;
    private SharedPreferences.Editor editor;
    private EditText accountEdit;
    private EditText passwordEdit;
    private Button login;
    private CheckBox rememberPass;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        pref = PreferenceManager.getDefaultSharedPreferences(this);
        accountEdit = (EditText) findViewById(R.id.editTextTextPersonName2);
        rememberPass = (CheckBox) findViewById(R.id.remember_pass);
        passwordEdit = (EditText) findViewById(R.id.editTextTextPassword);
        login = (Button) findViewById(R.id.login);
        boolean isRemenber = pref.getBoolean("remember_paassword", false);
        if (isRemenber) {
            //将账号和密码都设置到文本框中
            String account = pref.getString("account", "");
            String password = pref.getString("passworld", "");
            accountEdit.setText(account);
            passwordEdit.setText(password);
            rememberPass.setChecked(true);
        }

        login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                String account = accountEdit.getText().toString();
                String password = passwordEdit.getText().toString();
                //如果账号和密码是admin和123456则登陆成功
                if (account.equals("admin") && password.equals("123456")) {
                    editor = pref.edit();
                    if (rememberPass.isChecked()) {
                        //检查复选框是否被选中
                        editor.putBoolean("remember_password", true);
                        editor.putString("account", account);
                        editor.putString("password", password);
                    } else {
                        editor.clear();
                    }
                    editor.apply();
                    Intent intent = new Intent(MainActivity.this, LoginActivity.class);
                    startActivity(intent);
                    //finish();
                } else {
                    Toast.makeText(MainActivity.this, "account or password is invalid",
                            Toast.LENGTH_SHORT).show();
                }
            }
        });
    }

}


LoginActivity

public class LoginActivity extends AppCompatActivity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);


    }
}

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/textView4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Account:"
            android:layout_marginRight="10dp"/>

        <EditText
            android:id="@+id/editTextTextPersonName2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:ems="10"
            android:inputType="textPersonName" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/textView5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Password:" />

        <EditText
            android:id="@+id/editTextTextPassword"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:ems="10"
            android:inputType="textPassword" />


    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <CheckBox
            android:id="@+id/remember_pass"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Remember password"
            android:textSize="18sp"/>

    </LinearLayout>

    <Button
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:text="Login"
        android:id="@+id/login"/>



</LinearLayout>

注册和登录功能的思路

(还没实现,自己的总结可能有误,还会修改)

一、主活动登录注册界面。二、点击注册startActivity(intent)进入注册活动。首先获取每个控件的实例,然后在EditText里输入账号密码,点击注册。点击注册按钮执行以下活动:首先getString(这是一个要另外写的方法)方法获取输入的内容,然后if、else if判断账号/密码是否为空,再次输入密码 是否一致,用Toast显示提示信息(如:账号不能为空等等)。还要判断是否注册过该账号,怎么判断呢(写一个判断是否存在的方法:即从SharedPreferences中读取数据:首先getSharedPreferences()方法得到sharedpreference对象,然后getString(userName, “”)传入用户名和密码,如果密码为空,则未注册过此密码,则注册成功。)注册成功,就保存账号和密码到SharedPreferences中: saveRegisterInfo(userName, password);写一个saveRegisterInfo(String userName,String password)方法:sharedpreferences.editor editor = getsharedpreferences( ).edit(); 然后键值对,用户名和密码一一对应editor.putString(userName, passname); 登录活动:开始登录,获取用户名和密码,定义方法 读取用户名得到密码,如果输入密码和得到的密码相同则登录成功,定义通过用户名得到密码的方法(getsharedpreferences方法然后得到密码)

参考:
https://blog.csdn.net/yang_study_first/article/details/82146289?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162151658916780262513515%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=162151658916780262513515&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~rank_v29-15-82146289.pc_search_result_no_baidu_js&utm_term=%E5%AE%89%E5%8D%93%E6%B3%A8%E5%86%8C%E7%99%BB%E5%BD%95%E5%8A%9F%E8%83%BD%E5%AE%9E%E7%8E%B0

SharePreferences存储和数据库存储的结合

实现登录不同用户展示不一样的内容
(思路也许是错的)
思路:
1、新建一个sharedpreferences,可编辑,接着获取文本框的用户名和密码,保存在sharedpreferences里,其中sharedpreferences里的username和book里的username是一样的数据,通过数据库的《list》在book表里查找用户名有没有,密码有没有,用户名与密码是否匹配,符合这些查找条件list就>0 则登录成功就intent,intent进入另一个活动后,要怎么把该用户名的消息加载进来呢,获取sharedpreferences这个对象,获取它的用户名的值,通过数据库在book类的查找这个用户名匹配的信息,然后加载出来适配器的原理。
2、删除数据: 长按按钮,确认删除,获取这个item的位置 得到它的ID,该id就是book类一条数据的id,删除后刷新
3、添加数据:怎么知道添加的是次用户名的信息呢,sharedpreferences获取用户名,然后在book表的此用户名消息里添加,再刷新适配器

文章推荐:

http://www.uml.org.cn/sjjm/201410314.asp


https://cloud.tencent.com/developer/article/1014950

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值