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

آیا putextra در یک adapter و extras کردن اون در یک adapter دیگر امکان داره؟

احسان منصوری  12 سال پیش  11 سال پیش
+1 0

سلام دوستان.

آیا امکان داره که یه مقدار رو از یه adapter گرفت یعنی putextra کرد و توی یک adapter دیگه extrasش کرد؟ 

اگه میشه، لطف کنید بگید چجوری

0 0
adapter ها مسیر انتقال دیتا هستن و روشی که شما ذکر میکنید مربوط به انتقال مقدار بین دو اکتیویتی. احتمالا میتونی از این نیاز با تغییر برنامه صرفنظر کنی. اگر تغییر اکتیویتی هم اتفاق میافته میتونی از current activity بابت این انتقال استفاده کنی ولی منطقا ادپتور نباید منطقی رو پیاده کنه که نیاز به اطلاعات اینچنینی داشته باشه. ضمنا شاید یه فیلد استاتیک هم مشکل رو برطرف کنه! (12 سال پیش)
0 0
یه مشکلی دارم اونم اینه که باید حتما یک مقدار مثلا id رو از یک آیتم انتخاب شده لیست ویو، به یک لیست ویو دیگه که آداپترشون متفاوته انتقال بدم. هر چی هم فکر میکنم راه دیگه ای به ذهنم نمیرسه (12 سال پیش)
 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
محمد حسین زاده  12 سال پیش
+2 0

فرض کن 2 تا لیست دارید: مشتریان و کالاها

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

اگه کار با همین ترتیبه همواره فقط با 1 مشتری سر و کار داری، پس کافیه موقع انتخاب مشتری آیدی اونو تو مثلا G.currentCustomerId نگه داری و ازش موقع ثبت تو دیتا بیس استفاده کنی. دیگه نیازی به putextraو امثالهم هم نیست. موقع خروج هم حتما مقدار فیلد رو 0 کن.

0 0
این آخرشو متوجه نشدم. با اینکه خیلی واضح و روان توضیح دادین. این id رو چجوری تعریف کنم. یعنی توی کلاس G باید چجوری تعریف شه؟ (12 سال پیش)
0 0
یه فیلد استاتیک مثل currentActivity که تعریف کردی (12 سال پیش)
0 0
آره. اینجوری public static Activity currentId; (12 سال پیش)
+1 0
public static int currentCustomerId (12 سال پیش)
0 0
آها . ببخشید. خب (12 سال پیش)
0 0
حل شد. آقای حسین زاده تشکر  افتادی تو زحمت. ممنونم (12 سال پیش)
0 0
موفق باشی (12 سال پیش)
0 0
جناب حسین زاده من هم این مشکل رو دارم میشه لطفه بیشتر توضیح بدین؟ (11 سال پیش)
0 0
وقتی که شما یکی از آیتم های لیست ویو را انتخاب میکنید، عملا با یک مشتری (آیتم) سروکار دارید. ID اون آیتم رو داخل یک فیلد استاتیک ذخیره کنید و توی هر قسمت برنامه که خواستید استفاده کنید (11 سال پیش)
پاسخ به سوال 
sadeghbarout  12 سال پیش
+2 0

به نظرم یکم دقیقتر بگی میخوای چکار کنی شاید کار بهتری بشه انجام داد. ولی به طور معمول میتونید اون داده رو puextra کنید به اکتیویتی دومی که قراره آداپتر دوم از اونجا مقدار دهی بشه و بعد از اونجا به آداپتر بفرستیدش.

برای این کار باید constructor آرایه ات رو تغییر بدی :

از این شکل:

 public class AdapterListPayamak extends ArrayAdapter<Struct> {

public AdapterListPayamak(ArrayList<Struct> array) {
super(G.context, R.layout.adapter_list_payamak, array);
}


private static class ViewHolder {
...

باید تغییرش بدی به این شکل:

 public class AdapterListPayamak extends ArrayAdapter<Struct> {

public AdapterListPayamak(ArrayList<Struct> array , String str) {
super(G.context, R.layout.adapter_list_payamak, array);
}


private static class ViewHolder {
...

و بعد موقع تعریف adapter ت از توی اون اکتیویتی دوم،  اون مقدار رو (مثلا myText) بفرستی به آداپتر:

  adapter = new AdapterListPayamak(G.structArray , myText);

راه دوم : اینکه خیلی ساده تر ، اون مقدار رو به عنوان یه متغییر public static معرفی کنی و از توی آداپترت به اون متغییر استاتیک رفرنس بدی

0 0
سلام. ممنون از توضیحاتتون. ولی من همینی که آقای حسین زاده گفتن رو میخوام انجام بدم. ولی نمیدونم چجوریه. (12 سال پیش)
0 0
شاید بشه از SharedPreferences استفاده کرد. (11 سال پیش)

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