jeudi 5 novembre 2015

How to store type date in SQLite Android which user will insert?

I'm trying to do this, but i'm not very good with sql and still learning android, so a little help would be appreciate here.

This is my database:

public class DBHelper extends SQLiteOpenHelper {

private static final int DATABASE_VERSION = 1;

private static final String DATABASE_NAME = "_database";

private static final String BIRTHDAY_TABLE_NAME = "birthday_table";

public static final String BIRTHDAY_ID = "birthday_id";
public static final String BIRTHDAY_NAME = "birthday_name";
public static final String BIRTHDAY_DATE = "dob";
public static final String BIRTHDAY_LAST_NAME = "birthday_last_name";

private static final String CREATE_BIRTHDAY_TABLE = "CREATE TABLE " + BIRTHDAY_TABLE_NAME +
        " ( " + BIRTHDAY_ID + " INTEGER PRIMARY KEY," + BIRTHDAY_DATE + " DATE, "
        + BIRTHDAY_NAME + " TEXT," + BIRTHDAY_LAST_NAME + " TEXT );";

private String getDateTime() {
    SimpleDateFormat dateFormat = new SimpleDateFormat(
            "yyyy-MM-dd HH:mm:ss", Locale.getDefault());
    Date date = new Date();
    return dateFormat.format(date);
}

SQLiteDatabase database;

public DBHelper(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL(CREATE_BIRTHDAY_TABLE);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("DROP TABLE IF EXISTS " + BIRTHDAY_TABLE_NAME);
    onCreate(db);
}

public void setBirthdayData(String birthdayName, String birthdayLastName) {
    database = getWritableDatabase();
    ContentValues cv = new ContentValues();
    cv.put(BIRTHDAY_NAME, birthdayName);
    cv.put(BIRTHDAY_LAST_NAME, birthdayLastName);
    cv.put(BIRTHDAY_DATE, getDateTime());
    database.insert(BIRTHDAY_TABLE_NAME, null, cv);
}


public Cursor getBirthdayData() {
    database = getReadableDatabase();
    String[] columns = {BIRTHDAY_ID, BIRTHDAY_NAME, BIRTHDAY_LAST_NAME, BIRTHDAY_DATE};
    Cursor c = database.query(BIRTHDAY_TABLE_NAME, columns, null, null, null, null, BIRTHDAY_ID + " DESC");
    return c;
}

public Cursor getBirthdayName(String[] args) {
    database = getReadableDatabase();
    String query = "SELECT " + BIRTHDAY_NAME + " FROM " + BIRTHDAY_TABLE_NAME + " WHERE " + BIRTHDAY_NAME + " =?";
    Cursor c = database.rawQuery(query, args);
    return c;
}

public boolean deleteItem(long rowId) {
    SQLiteDatabase db = getWritableDatabase();
    return db.delete(BIRTHDAY_TABLE_NAME, BIRTHDAY_ID + "=" + rowId, null) > 0;
}
}

And this is my model class:

    public class Birthday {

    protected int BIRTHDAY_ID;
    protected String NAME;
    protected String LAST_NAME;
    protected Date BIRTHDAY_DATE;

    public int getBIRTHDAY_ID() {
        return BIRTHDAY_ID;
    }

    public void setBIRTHDAY_ID(int BIRTHDAY_ID) {
        this.BIRTHDAY_ID = BIRTHDAY_ID;
    }

    public String getNAME() {
        return NAME;
    }

    public void setNAME(String NAME) {
        this.NAME = NAME;
    }

    public String getLAST_NAME() {
        return LAST_NAME;
    }

    public void setLAST_NAME(String LAST_NAME) {
        this.LAST_NAME = LAST_NAME;
    }

    public Date getBIRTHDAY_DATE() {
        return BIRTHDAY_DATE;
    }

    public void setBIRTHDAY_DATE(Date BIRTHDAY_DATE) {
        this.BIRTHDAY_DATE = BIRTHDAY_DATE;
    }
}

And this is probably not important for this question, but it is additionally..

My MainActivity where i need to remove items from recyclerview which i'm using by the way, but it's not working. It is working if i use method from recyclerview adapter, but if i use it from database helper class it's not working, actually nothing happens.

Here is MainActivity:

    public class MainActivity extends AppCompatActivity {

    RecyclerView mRecyclerView;
    RecyclerView.LayoutManager mLayoutManager;
    GridAdapter mGridAdapter;
    DBHelper dbh;
    String firstName;

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

        initAddImage();

        dbh = new DBHelper(this);

        initRecyclerView();

        initDeleteImage();
    }

    public List<Birthday> getData() {
        List<Birthday> birthdays = new ArrayList<>();
        Birthday birthday = null;
        Cursor c = dbh.getBirthdayData();
        if (c != null) {
            while (c.moveToNext()) {
                int nameIndex = c.getColumnIndex(dbh.BIRTHDAY_NAME);
                String nameText = c.getString(nameIndex);
                this.firstName = nameText;

                int lastNameIndex = c.getColumnIndex(dbh.BIRTHDAY_LAST_NAME);
                String lastNameText = c.getString(lastNameIndex);

                birthday = new Birthday();
                birthday.setNAME(nameText);
                birthday.setLAST_NAME(lastNameText);
                birthdays.add(birthday);

            }
        }

        return birthdays;
    }

    private void initRecyclerView(){
        mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view);
        mRecyclerView.setItemAnimator(new ScaleInAnimator());

        // The number of Columns
        mRecyclerView.setHasFixedSize(true);

        mLayoutManager = new GridLayoutManager(this, 3);
        mRecyclerView.setLayoutManager(mLayoutManager);

        mGridAdapter = new GridAdapter(getData());

        mRecyclerView.setAdapter(mGridAdapter);
    }

    private void initAddImage(){
        ImageView addImage = (ImageView) findViewById(R.id.add_image);
        addImage.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, AddBirthday.class);
                startActivity(intent);
            }
        });
    }

    private void initDeleteImage(){
        ImageView deleteImage = (ImageView) findViewById(R.id.delete_image);
        deleteImage.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mGridAdapter.removeItem(0);
            }
        });
    }

    @Override
    protected void onResume() {
        super.onResume();
        initRecyclerView();
    }
}

Aucun commentaire:

Enregistrer un commentaire