آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

مشکل درحذف آیتم در ریسایکلر ویو و دیتابیس (حل شد)

mosafer  8 سال پیش  8 سال پیش
0 0

با سلام خدمت دوستان عزیز

من یه ریسایکلر ویو دارم که اطلاعات رو از دیتابیس میگیرم و در اون نمایش میدم

و برای هر آیتم یه قسمت هست که اگر کاربر ترجیح داد آیتمی رو پاک کنه با زدن اون آیتم هم از ریسایکلر ویو و هم از دیتابیس پاک بشه.

در ریسایکلر ویو به درستی انجام میشه ولی در دیتابیس بصورت کامل انجام نمیشه

مثلا اگر من 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 سال پیش)
 برای این سوال پاسخی وجود ندارد.

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .