بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
مشکل در بهروزرسانی اطلاعات دیتابیس در ریسایکلرویو
سلام دوستان
من اطلاعات رو با ادیت تکست از کاربر میگیرم و وارد دیتابیس میکنم و میخوام در لحظه آپدیت بشه.
اما با 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();
}
پاسخ به سوال
میلاد محمدی
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)
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .