Хранение данных в андроид

278
25 ноября 2017, 10:13

пишу приложения и мне нужно будет содержать о юзере данные. Например имя, избранное , авторизован ли и тд. Как мне это реализовать. Заранее извеняюсь за немного нубский вопрос но в андроид разработки я новичек)

Answer 1
  1. Хранение данных, используя Preferences
  2. Хранение данных, используя SQLite

Для твоего случая, лучше использовать 2 случай.

Нарисуем экран для ввода записей и очистки таблицы

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">
    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Name"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp">
        </TextView>
        <EditText
            android:id="@+id/etName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1">
            <requestFocus>
            </requestFocus>
        </EditText>
    </LinearLayout>
    <LinearLayout
        android:id="@+id/linearLayout3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Email"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp">
        </TextView>
        <EditText
            android:id="@+id/etEmail"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1">
        </EditText>
    </LinearLayout>
    <LinearLayout
        android:id="@+id/linearLayout2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <Button
            android:id="@+id/btnAdd"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Add">
        </Button>
        <Button
            android:id="@+id/btnRead"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Read">
        </Button>
        <Button
            android:id="@+id/btnClear"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Clear">
        </Button>
    </LinearLayout>
</LinearLayout>

Пара полей для ввода и кнопки добавления записи, вывода существующих записей и очистки таблицы

public class MainActivity extends Activity implements OnClickListener {
  final String LOG_TAG = "myLogs";
  Button btnAdd, btnRead, btnClear;
  EditText etName, etEmail;
  DBHelper dbHelper;
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    btnAdd = (Button) findViewById(R.id.btnAdd);
    btnAdd.setOnClickListener(this);
    btnRead = (Button) findViewById(R.id.btnRead);
    btnRead.setOnClickListener(this);
    btnClear = (Button) findViewById(R.id.btnClear);
    btnClear.setOnClickListener(this);
    etName = (EditText) findViewById(R.id.etName);
    etEmail = (EditText) findViewById(R.id.etEmail);
    // создаем объект для создания и управления версиями БД
    dbHelper = new DBHelper(this);
  }

  @Override
  public void onClick(View v) {
    // создаем объект для данных
    ContentValues cv = new ContentValues();
    // получаем данные из полей ввода
    String name = etName.getText().toString();
    String email = etEmail.getText().toString();
    // подключаемся к БД
    SQLiteDatabase db = dbHelper.getWritableDatabase();

    switch (v.getId()) {
    case R.id.btnAdd:
      Log.d(LOG_TAG, "--- Insert in mytable: ---");
      // подготовим данные для вставки в виде пар: наименование столбца - значение
      cv.put("name", name);
      cv.put("email", email);
      // вставляем запись и получаем ее ID
      long rowID = db.insert("mytable", null, cv);
      Log.d(LOG_TAG, "row inserted, ID = " + rowID);
      break;
    case R.id.btnRead:
      Log.d(LOG_TAG, "--- Rows in mytable: ---");
      // делаем запрос всех данных из таблицы mytable, получаем Cursor 
      Cursor c = db.query("mytable", null, null, null, null, null, null);
      // ставим позицию курсора на первую строку выборки
      // если в выборке нет строк, вернется false
      if (c.moveToFirst()) {
        // определяем номера столбцов по имени в выборке
        int idColIndex = c.getColumnIndex("id");
        int nameColIndex = c.getColumnIndex("name");
        int emailColIndex = c.getColumnIndex("email");
        do {
          // получаем значения по номерам столбцов и пишем все в лог
          Log.d(LOG_TAG,
              "ID = " + c.getInt(idColIndex) + 
              ", name = " + c.getString(nameColIndex) + 
              ", email = " + c.getString(emailColIndex));
          // переход на следующую строку 
          // а если следующей нет (текущая - последняя), то false - выходим из цикла
        } while (c.moveToNext());
      } else
        Log.d(LOG_TAG, "0 rows");
      c.close();
      break;
    case R.id.btnClear:
      Log.d(LOG_TAG, "--- Clear mytable: ---");
      // удаляем все записи
      int clearCount = db.delete("mytable", null, null);
      Log.d(LOG_TAG, "deleted rows count = " + clearCount);
      break;
    }
    // закрываем подключение к БД
    dbHelper.close();
  }

  class DBHelper extends SQLiteOpenHelper {
    public DBHelper(Context context) {
      // конструктор суперкласса
      super(context, "myDB", null, 1);
    }
    @Override
    public void onCreate(SQLiteDatabase db) {
      Log.d(LOG_TAG, "--- onCreate database ---");
      // создаем таблицу с полями
      db.execSQL("create table mytable ("
          + "id integer primary key autoincrement,"
          + "name text,"
          + "email text" + ");");
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    }
  }
}

Источник: Start Android

READ ALSO
Считывание данных с Option выбранного Select(Java)

Считывание данных с Option выбранного Select(Java)

Здравствуйте, пишу Java EE приложение и возник вопрос о том, как считать данные из элемента HTML - выбранного пользователемДля внешнего вида у меня...

261
Как сохранить SecretKey

Как сохранить SecretKey

Я генерирую случайный ключ шифрования таким способом

253
Проблемы с TableLayout(androidstudio)

Проблемы с TableLayout(androidstudio)

Решил программно добавлять таблицу в приложение, написал, приложение стало вылетать, чувствую что где то накосячил но не знаю где,help!

240
Можно ли как-то отображать динамически изменяющуюся раскладку на Java?

Можно ли как-то отображать динамически изменяющуюся раскладку на Java?

Добрый день, я хочу сделать отображение активного языка раскладки клавиатуры в своём приложении, просто потому что в полноэкранном режиме...

213