بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
ذخیره باتن لایک گذاشته شده در تولبار
سلام دوستان ، من توی تولبارم یک ایکن لایک گذاشتم که یوزر می تونه لایک کنه و یا لایکش رو برداره . ولی نمیدونم چه جوری باید این ها رو ذخیره کنم. داخل دیتابیس هم یک ستون گذاشتم به اسم post_like که مقدار دیفالتش رو صفر گذاشتم . وقتی هم که یوزر لایک می کنه یه پستی رو باید مقدارش اپدیت بشه به عدد یک . میشه لطفا راهنمایی کنین . اینم کد مربوط به ایکن لایک :
public boolean state;
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.share:
...
...
return true;
case R.id.like:
state = !state;
if(state){
Drawable myDrawable = getResources().getDrawable(R.drawable.ic_action_pressedlike);
item.setIcon(myDrawable);
} else {
Drawable myDrawable = getResources().getDrawable(R.drawable.ic_action_like);
item.setIcon(myDrawable);
}
return true;
default:
return super.onOptionsItemSelected(item);
}
}
برای این سوال 2 پاسخ وجود دارد.
مشاهده پاسخ صحیح

پاسخ به سوال
Amir
8 سال پیش
+3
0
یه ستون دیگم بزارید به اسم post_name و اگه فرض کنیم اسم table شما post هست:
با کد زیر می تونید لایک رو ذخیره کنید:
int name = "Item1";
int like = 1;
database.execSQL("INSERT INTO post (post_name, post_like) VALUES ('" + name +"', '" + like + "')");
و با کد زیر مقدار لایک رو بگیرید.
int name = "Item1";
int like = 0;
Cursor cursor = database.rawQuery("SELECT post_like FROM post WHERE post_name='" + name + "'", null);
while (cursor.moveToNext()) {
like = cursor.getInt(cursor.getColumnIndex("post_like"));
}
cursor.close();
دوستان دیتابیس من این جوری هست که فایلش رو دستی کپی می کنم توی فولدر assets و بعد براش نوشتم که کپی بشه توی مسیر فایل دیتابیس در اندروید استودیو یعنی همون فولدر databases . واسه همین فکر نکنم بتونم از execSQL استفاده کنم . چون قرار نیست که ساخته بشه دیگه . بعد کاربر می تونه لایکش رو هم برداره یعنی مقدار ستون post_like صفر هم می تونه باشه . با این حساب دو بار باید اپدیت بشه دیگه ؟ . و این که کدهای مربوط به onOptionesItemSelected همونایی که نوشتم کافیه ؟ اونجا نیاز به تغییر نداره ؟ از اینکه وقت گزاشتین واقعا ممنونم. (8 سال پیش)

پاسخ به سوال
MarAnd
8 سال پیش
0
0
پاسخ صحیح
سلام دوستان ؛ ممنونم از اینکه وقت گزاشتین برای سوال من و جواب های شما به من خیلی کمک کرد و در نهایت با این کد زیر تونستم لایکم رو در سمت دیتابیس ام ، اکی کنم :
public void updateDB (boolean state, int pid){
openDatabase();
int myInt = (state)? 1 : 0;
ContentValues values = new ContentValues();
values.put(KEY_POST_LIKE, myInt);
myDatabase.update(TABLE_NAME, values, KEY_POST_ID + " = ? ", new String[] { String.valueOf(pid) });
closeDatabase();
}
ستون post_like رو از نوع اینت گزاشتم و شرطش رو هم اینکه کدوم پست انتخاب شده گزاشتم .
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .