原创

Androind 数据绑定和存储


Android 中的本地存储主要有三种方式:

SharePreference:key-value 形式,主用于数据较少的配置信息的存储。
SQLite:一些比较复杂的数据结构,特别适合对象存储。
File Save:比较大的文件(例如日志,图片缓存,apk包等)或者某些特殊的配置文件。
  • SharedPreferences 创建对象SharedPreferences
 private static final String FILR_NAME="test_save";
    private static final String DATA_KEY="save_key";

    private EditText mainEditText;
    private TextView mainTextView;

    private SharedPreferences sharedPreferences;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test_sharef_preference);

        sharedPreferences=getSharedPreferences(FILR_NAME, Context.MODE_PRIVATE);

        mainEditText=findViewById(R.id.et_main_data);
        mainTextView=findViewById(R.id.tv_show_data);
    }
  • 上面的第一个参数是配置文件名称,第二个参数是存储模式,有下面几种:
  1. MODE_PRIVATE,则该配置文件只能被自己的应用程序访问。
  2. MODE_WORLD_READABLE,则该配置文件除了自己访问外还可以被其它应该程序读取。
  3. MODE_WORLD_WRITEABLE,则该配置文件除了自己访问外还可以被其它应该程序读取和写入。
  4. MODE_APPEND,检查文件是否存在,存在就往文件追加内容,否则就创建新文件。
  • 存储数据: 存储数据需要获得 Editor 对象,然后使用 Editor 对象添加对应格式数据,最后记得 commit(提交同步)
  private void savaData(String key,String data){
        SharedPreferences.Editor editor=sharedPreferences.edit();
        editor.putString(key,data);
        editor.commit();//提交数据
    }
  • 读取数据: 根据对应的 key 获取值, 后面第二个参数是默认值(当key没找到时)。 SharePreference 是基于 xml 格式的一种文件存储,可以在 data/data/{项目文件名}/shared_prefs 下找到该文件:
  private  String getData(String key){//获取
        return sharedPreferences.getString(key,null);
    }

整体代码:

public class TestSharedPreferenceActivity extends AppCompatActivity {
    private static final String FILR_NAME="test_save";
    private static final String DATA_KEY="save_key";
    private EditText mainEditText;
    private TextView mainTextView;
    private SharedPreferences sharedPreferences;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test_sharef_preference);
        sharedPreferences=getSharedPreferences(FILR_NAME, Context.MODE_PRIVATE);
        mainEditText=findViewById(R.id.et_main_data);
        mainTextView=findViewById(R.id.tv_show_data);
    }
    private void savaData(String key,String data){
        SharedPreferences.Editor editor=sharedPreferences.edit();
        editor.putString(key,data);
        editor.commit();//提交数据或者editor.apply();
    }
    private  String getData(String key){//获取
        return sharedPreferences.getString(key,null);
    }
/*保存数据*/
    public void saveDataSharedPreference(View view) {
        String saveData=mainEditText.getText().toString().trim();
        if (TextUtils.isEmpty(saveData)){
            ToasUtil.showToast(this,"请输入要保存的数据");
            return;
        }
        savaData(DATA_KEY,saveData);
    }
        /*读取数据*/
    public void readDataToScreen(View view) {
        String data = getData(DATA_KEY);
        if (TextUtils.isEmpty(data)){
            ToasUtil.showToast(this,"没查询到数据");
            return;
        }
        mainTextView.setText(data);
    }
}

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:gravity="center"
    android:layout_height="match_parent">
    <EditText
        android:id="@+id/et_main_data"
        android:layout_width="match_parent"
        android:layout_height="48dp"
        android:hint="请输入要存储的数据"
        />
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        >
        <Button
            android:layout_width="match_parent"
            android:layout_height="48dip"
            android:layout_weight="1"
            android:text="存储"
            android:onClick="saveDataSharedPreference"
            />
        <Button
            android:layout_weight="1"
            android:layout_width="match_parent"
            android:layout_height="48dip"
            android:text="读取"
            android:onClick="readDataToScreen"
            />
    </LinearLayout>
<TextView
    android:id="@+id/tv_show_data"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="20dp"
    android:text="数据显示"
    />
</LinearLayout>
学习笔记
  • 作者:杜兄(联系作者)
  • 发表时间:2019-10-05 16:07
  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
  • 公众号转载:请在文末添加作者公众号二维码
  • 评论