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

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

میلاد محمدی  6 سال پیش  6 سال پیش
0 0

سلام دوستان
من اطلاعات رو با ادیت تکست از کاربر میگیرم و وارد دیتابیس میکنم و میخوام در لحظه آپدیت بشه.
اما با notifyDataSetChanged اطلاعات تغییری نمیکنه، فقط لیست خالی میشه و برای نشون دادن اطلاعات قدیمی + جدید باید حتما خارج و وارد اکتیویتی شم.این کد داخل اکتیویتی اصلی برای اضافه کردن اطلاعاته:

send.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
recyclerview_todo.setVisibility(View.VISIBLE);
linear_no_item.setVisibility(View.GONE);
final ArrayList<planInfo> info = new ArrayList<>();
Cursor cursor = database.getReadableDatabase().rawQuery("INSERT INTO toDo (text) VALUES('"+edt_plan.getText().toString()+"')",null);
//cursor = database.getReadableDatabase().rawQuery("SELECT * FROM toDo",null);
while (cursor.moveToNext()) {
String text = cursor.getString(cursor.getColumnIndex("text"));
info.add(new planInfo(text));

}
cursor.close();
adapter.setData(info);

}
});

این هم کدی که داخل ادپتر نوشتم:

 
public void setData(ArrayList<planInfo> newData) {
list.clear();
list.addAll(newData);
notifyDataSetChanged();
}
 برای این سوال 2 پاسخ وجود دارد. مشاهده پاسخ صحیح
پاسخ به سوال 
namdar79  6 سال پیش
+2 0

 پاسخ صحیح

سلام 

دستوراتی که برای بازخوانی از دیتابیس نوشتید و دوباره پر کردن اداپتر منطق اشتباهی دارند. لازم نیست دوباره کل دیتابیس رو بخونید 

به نظر کد هارو به این صورت تغییر بدید:

 
send.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
recyclerview_todo.setVisibility(View.VISIBLE);
linear_no_item.setVisibility(View.GONE);
final ArrayList<planInfo> info = new ArrayList<>();
String text = edt_plan.getText().toString();
Cursor cursor = database.getReadableDatabase().rawQuery("INSERT INTO toDo (text) VALUES('"+text+"')",null);
//cursor = database.getReadableDatabase().rawQuery("SELECT * FROM toDo",null);
cursor.close();
adapter.addData(new planInfo(text));

}

داخل اداپتر:

 
public void addData(planInfo newData) {
list.add(newData);
notifyDataSetChanged();
}

 

 

 
0 0
ممنونم. کدها رو همینطور که فرمودید تغییر دادم اما وقتی روی دکمه کلیک میشه فورس کلوز میده، از لاگ هم چیز خاصی دستم نمیاد! توی پاسخ بعدی لاگ‌هارو قرار میدم (6 سال پیش)
پاسخ به سوال 
میلاد محمدی  6 سال پیش
0 0

اروری که توی لاگ موقع کلیک ثبت میشه این هستش:

 E: FATAL EXCEPTION: main
java.lang.NullPointerException
at com.milad.unihi.Fragments.PlannerFragment$1.onClick(PlannerFragment.java:85)
at android.view.View.performClick(View.java:4204)
at android.view.View$PerformClick.run(View.java:17355)
at android.os.Handler.handleCallback(Handler.java:725)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5041)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
at dalvik.system.NativeStart.main(Native Method)
E: ro.sf.lcd_density must be defined as a build property
E: ro.sf.lcd_density must be defined as a build property
E: tid 1651: eglSurfaceAttrib(1199): error 0x3009 (EGL_BAD_MATCH)
0 0
مشکلم حل شد دوست عزیز ممنونم (6 سال پیش)

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