2017-06-06 10 views
0

私はハードコアのトレーニング中毒者である私の友人のためのアプリを作ろうとしており、私はアプリの一部で立ち往生しています。日時任意の方法で保存する

私は自分のワークアウトの1つ1つの日時を自動的に保存しようとしているので、彼が最後に作業した時間と、 。

しかし、私はこれについてどうやって行くのか分かりません。 SharedPreferencesに関する私の知識は控えめであり、私はGoogleカレンダーを統合することができません。これが起こるような何か他の方法はありますか?

もしそうでなければ、誰かがSharedPreferencesの部分を教えてくれますか?

ありがとうございます。

+0

SharedPreferenceにデータを保持するのではなく、月単位でデータを保存する場合は、dbを使用します。 – sumit

+0

@sumit ok申し訳ありませんが、それは私のせいではなかったことです。私が月に言ったとき、それはちょうど時間の例だった。私は実際に永遠にそれを保存したい。 –

+0

セッションを維持するのと同じように、小さな塊のデータを保存するためにSharedPreferenceが使用されるため、データベースに行く必要があります。 – sumit

答えて

0

ここではデザインを作成しました。必要に応じて必要な変更を加えることができます。

//Create a dbHelper class like this 

public class DatabaseNew extends SQLiteOpenHelper { 
    private static final String TAG = "DataBase"; 

    public DatabaseNew(Context context){ 
     super(context,DATABASE_NAME,null,DATABASE_VERSION); 
    } 
    private static final int DATABASE_VERSION = 1; 
    private static final String DATABASE_NAME = "Module1"; 
    private static final String USERTABLE = "USER_INFO"; 
    private static final String KEY_ID = "id"; 
    private static final String WORKOUT = "WORKOUT"; 
    private static final String WORKOUT_TIME = "WORKOUT_TIME"; 

    private static final String CREATE_TABLE_USER = "CREATE TABLE IF NOT EXISTS " 
      + USERTABLE + "(" + KEY_ID + " INTEGER PRIMARY KEY," + WORKOUT + " TEXT," 
      + WORKOUT_TIME + " TEXT"+");"; 

    private static final String SQL_DELETE_ENTRIES = 
      "DROP TABLE IF EXISTS " + USERTABLE; 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     Log.e(TAG,"Inside onCreate: creating table"); 
     db.execSQL(CREATE_TABLE_USER); 
    } 

    //to save workout name and time in db 
    public void saveData(String workout, String time){ 
     SQLiteDatabase db = this.getWritableDatabase(); 
     ContentValues data = new ContentValues(); 
     data.put(WORKOUT,workout); 
     data.put(WORKOUT_TIME,time); 
     db.insert(USERTABLE,null,data); 
     db.close(); 
    } 

    //to get workout name and time from db 
    public List<HashMap<String,String>> getData(){ 
     List<HashMap<String,String>> userData = new ArrayList<>(); 
     String selectQuery = "SELECT * FROM " + USERTABLE ; 
     SQLiteDatabase db = this.getWritableDatabase(); 
     Cursor cursor = db.rawQuery(selectQuery, null); 
     if (cursor.moveToFirst()) { 
      do { 
       HashMap<String,String> dataMap = new HashMap<>(); 
       dataMap.put(WORKOUT,cursor.getString(cursor.getColumnIndex(WORKOUT))); 
       dataMap.put(WORKOUT_TIME,cursor.getString(cursor.getColumnIndex(WORKOUT_TIME))); 
       userData.add(dataMap); 
      } while (cursor.moveToNext()); 
     } 
     cursor.close(); 
     return userData; 

    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     Log.e(TAG,"Inside onUpgrade"); 
     db.execSQL(SQL_DELETE_ENTRIES); 
     onCreate(db); 
    } 
} 

//は、その後、あなたの活動の内側

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_test); 
     //Initializing the db 
     DatabaseNew db = new DatabaseNew(this); 
     //sending dummy data you can send actual workout and time like this 
     db.saveData("pull up","30 mins"); 
     db.saveData("push up","40 mins"); 
     db.saveData("Leg up","30 mins"); 
     db.saveData("crunches","30 mins"); 
     db.saveData("Bench Press","30 mins"); 

     //to retrieve data from data base 
     List<HashMap<String,String>> data = db.getData(); 
     for (HashMap<String,String> a : data){ 
      Log.e("TestActivity"," "+"Workout : "+a.get("WORKOUT") 
        +" "+"Time : "+a.get("WORKOUT_TIME")); 
     } 
    } 

はそれが役に立てば幸い!

+0

ありがとうございました!これは実際に多くの助けになります。 –

+0

それから答えとしてupvoteしてください – sumit

関連する問題