بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
مشکل درحذف آیتم در ریسایکلر ویو و دیتابیس (حل شد)
با سلام خدمت دوستان عزیز
من یه ریسایکلر ویو دارم که اطلاعات رو از دیتابیس میگیرم و در اون نمایش میدم
و برای هر آیتم یه قسمت هست که اگر کاربر ترجیح داد آیتمی رو پاک کنه با زدن اون آیتم هم از ریسایکلر ویو و هم از دیتابیس پاک بشه.
در ریسایکلر ویو به درستی انجام میشه ولی در دیتابیس بصورت کامل انجام نمیشه
مثلا اگر من 5 آیتم ایجاد کنم و بخوام یکی یکی همه رو پاک کنم 3 آیتم آخری پاک میشن بدرستی ولی 2 آیتم ابتدایی در دیتابیس پاک نمیشن چرا؟
این کد دیتابیس منه برای حذف آیتم :
public Boolean deleteIdea(int idea) {
boolean result;
try {
String query = "DELETE FROM tbl_idea WHERE id = " + idea;
SQLiteDatabase db = this.getWritableDatabase();
db.execSQL(query);
db.close();
result = true;
}
catch (Exception ex) {
result = false;
}
return result;
}
و اینم متد onBindViewHolder که عملیات حذف در اون قرار داده شده که هر آیتم رو هم در ریسایکلر ویو و هم در دیتابیس رو پاک میکنه
@Override
public void onBindViewHolder(final MyViewHolder holder, final int position) {
db = new Database(mContext);
final Idea idea = ideaList.get(position);
holder.title.setText(idea.getName());
holder.count.setText(idea.getHoze_estefade() );
holder.overflow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
boolean result = db.deleteIdea(position);
if (result == true) {
ideaList.remove(position);
notifyDataSetChanged();
Toast.makeText(mContext, " حذف شد", Toast.LENGTH_SHORT).show();
} else{
Toast.makeText(mContext, " حذف نشد", Toast.LENGTH_SHORT).show();
}
}
});
}
ممنون میشم راهنمایی کنید
+1
0
سلاااااااااام . معلومه که از دیتابیس حذف نمیشه .چون position برابر با مقدار id در جدول نیست . چون id در جدول autoIncrement هست و وقتی یه سری رکورد پاک میشه دیگه اون id ها پر نمیشه . ولی در ریسایکلر و آرایه متصل به اون ، position همیشه از صفر شروع میشه . کاری که شما باید بکنید اینه که وقتی داده ها رو از دیتابیس میگیری و آرایه رو میسازی ، id اونا رو هم بگیری و در کلاس مدل هم یه int داشته باشی به نام id و بر اساس id عملیات حذف رو انجام بدی . (8 سال پیش)
0
0
آقا رضا پاک میشن ولی آیتم ابتدایی که آی دیش صفر هست پاک نمیشه. در ریسایکلر ویو پاک میشه ولی وقتی از اون صفحه خارج میشم و دوباره وارد میشم میبینم که آیتم با آی دی صفر هنوز وجود داره (8 سال پیش)
0
0
من همون کاری که شما گفتین رو انجام دادم و تونستم مشکل رو حل کنم ولی یه ایراد دیگه داره.
اینکه مثلا اگر من 3 آیتم داشته باشم و بخوام آیتم 1 رو پاک کنم آیتم 3 پاک میشه ولی در لیست ریسایکلرویو آیتم یک پاک میشه.و وقتی از اون صفحه خارج میشم و دوباره وارد میشم آیتم 1 و 2 نمایش داده میشه در صورتی که من آیتم یک رو پاک کردم ولی آیتم 3 پاک شد.
چکار کنم؟ (8 سال پیش)
+1
0
شما در onBindViewHolder و در onClick هر آیتم بیا id اون آیتم ( idea ) رو بگیر و اول اون آیتم رو بر اساس position از آرایه و ریسایکلر حذف کن . ولی از دیتابیس بر اساس اون id که گرفتی حذف کن . (8 سال پیش)
0
0
آقا رضا حل شد خیلی ممنون
یه جا من اشتباه کردم (8 سال پیش)
برای این سوال پاسخی وجود ندارد.
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .