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

ویرایش اطلاعات ریسایکلرویو و اپدیت ان(حل شد)

sana ebadi  9 سال پیش  9 سال پیش
+2 0

به نام خدا 

سلام دوستان امیدوارم حالتون خوب باشه .. :)
من یک ریسایکلر ویو دارم که در لایه ای که براش در نظر گرفتم سه تا ایتم داره : 1. نام کتاب 2. نام نویسنده 3. سال انتشار
خب من برای  Long Click ایتم های این ریسایکلر وو اومدم و ی کاستوم دیالوگ ساختم که با زدن هرکدوم از ایتم هاش 
میاد و اکشنی رو انجام میده ..
و اینکه یکی از ایتم هاش ویرایش هست ... ینی اون سه تا ایتم هرو ویرایش بدیم و بعد ایتم های قبلی کلا به ایتم های جدید که کاربر مینوسه تغییر کنه ..
خب حالا این کد رو چجور برای دکمه ی  "ذخیره" که وظیفه ی ذخیرهی اطلاعات جدید و فرستادنش به ریسایکلر ویو رو داره 
بنویسم ؟

 

 btn_save.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View view) {
       
      Book book = BookAdapter.bookList.get(position);
       book.tittle = edt_tittle.getText().toString();
       book.author = edt_author.getText().toString();
       book.year = edt_year.getText().toString();

     
       finish();
     }
   });

دقیقا کدی که استاد برای ویرایش لیست ویو استفاده کردن ، ولی اینجا برای ریسایکلر ووی انجام نمیشد :)

ممنون بچه ها 

 برای این سوال 3 پاسخ وجود دارد. مشاهده پاسخ صحیح
پاسخ به سوال 
QUQU  9 سال پیش
+2 0

کامل متوجه سوالتون نشدم ولی به طور کلی میگم :
شما باید اطلاعات کلی تون رو تغییر بدین  (Model ـتون رو) (مثلا دیتابیس یا صرفا اون آرایه ای که اطلاعات توشه.) و بعد recyclerView رو متوجه تغییرات کنین. (من خیلی وقته Android کار نکردم ولی فکر کنم با استفاده از method ـ notifySetChange یا همچین چیزی بود.)

0 0
ممنون دوست عزیز . ولی من در کلاس اداپتر نیستم و اطلاعات ارایه ام هم رو دستی وارد کردم و از دیتابیس استفاده نکردم . adapter.notifyDataSetChanged(); منظورتونه ؟ چجوری ازش استفاده کنم ؟ من چجوری این کدو بنویسم ؟ (9 سال پیش)
0 0
دقیقا کدی که استاد برای لست ویو نوشتن رو نوشتم در لیست ویو درسته ولی در ریسایکلر ویو ن ! من چه کدی بنویسم ؟ (9 سال پیش)
پاسخ به سوال 
sana ebadi  9 سال پیش
0 0

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

خب این صفحه اول برنامه ام که ریسایکلر ویو هست و دارای3  تا ایتم هست (بدون تصویر کتاب که ثابت هست)

اسم کتاب ، اسم نویسنده ، سال انتشار :) نیگا کنید :

 

خب حالا من جوری lonClick براش تعریف کردم که یک دیالوگ باز بشه که چنتا ایتم داره که یکیش " ویرایش "هست !

توجه کنید به تصویر زیر :

 

خب حالا با زدن ایتم "ویرایش" میر یم یک اکتویتی که ویرایش در اون انجام میشه . مثل تصویر زیر :

 

خب ، جوری که میبیند و متوجه هستید من تونستم کلا اطلاعات ایتمی که روش کلیک شده رو بیارم توی فیلد های مرتبط که بتونم ویرایشش بدم:)

خب حالا که ویرایششون کردم و بر دکمه ی  " ذخیره " زدم میخوام تموم اون تغییراتی که اعمال کردم ، دوباره برگرده بشینه توی صفحه ی اولم همون ریسایکلرویو ، جای استم های مرتبطش :

مثلا اسم کتاب که " داستان دو شهر "  هست من تغییرش بدم به کتاب " زمین سبز " مثلا 

یا اینکه اسم نویسنده یا  سال انتشار .. 

بعد ذخیره رو زدم و برگشتم صفحه قبل اون تغییرات اعمل شده باشه ینی جای "داستان دو شهر " شده باشه " زمین سبز" :)

 

من اینو چجور بنویسم ؟

مرسی بچه ها 

 

پاسخ به سوال 
sana ebadi  9 سال پیش
+1 0

 پاسخ صحیح

بچه ها درست شد 

بالاخره باید اینجور بنویسید :

btn_save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {

Book book = BookAdapter.bookList.get(position);
book.tittle = edt_tittle.getText().toString();
book.author = edt_author.getText().toString();
book.year = edt_year.getText().toString();


finish();
}
});

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

و این کد رو باید متد  onResume بنویسیم که من نمینوشتم :

@Override
protected void onResume() {
G.currentActivity = this;
super.onResume();
adapter.notifyDataSetChanged();
}

و اینجوری درست شد . خیلی ممنون از دوستان عزیزم :)

+1 0
سلام خانم عبادی. خوشحالم که مشکلتون حل شد. من هم تقریبا یه مشکل این اینجوری دارم ولی به شکل متفاوتی. به این صورت که خبرهای که در دیتابیس ثبت کردم رو در لیست ویو میگیرم و نشون میدم. و هر خبری قسمتی داره به عنوان ستاره دار شدن اون خبر که اگر روش بزنیم ستاره روشن میشه و جز خبر های برگزیده شناخته میشه. ولی هر وقت مثلا روی خبر اول ستاره دارش میکنم و لییست رو به سمت پایین اسکرول میکنم و دوباره به سمت بالا اسکرول میکنم میبینم که ستاره خبر اولی که ثبت کرده بودم دوباره غیر فعال شده. در دیتابیس ثبتش کردم ولی اینجا در لیست ویو این مشکل رو دارم. روش شما رو هم انجام دادم ولی نشد. بنظرتون چکار باید بکنم؟ (9 سال پیش)
+1 0
سلام ممنون بله به سختی متوجه شدم مشکلم چیه .. هههه البته مشکلم با ریسایکلر ویو بود نا با لیست ویو .. لیت وو رو استاد کاملا توضیح دادن .. فک کنم مشکلتون مثل همون چک باکس ها هست که با باید setOnClickListener رو به setOnCheckedChangeListener رو تغییر دادن و درست شد ... الان من برای لیست ویو نمیدونم و نمیدونم برای این موضوع که از دیتابیس میگیرم چجور عمل میکنه و دلیلش چیه و لی مطرحش کنید دوستان هستن کمک خواهند کرد :) (9 سال پیش)

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