تابستون داره تموم میشه ها، فرصت‌ها محدودن کلی آفر جذاب در کمپین تابستون🔥👇
۰ ثانیه
۰ دقیقه
۰ ساعت
۴ Amir Mohammad Abdollahi
چند سوال مربوط به Picasso
پوریا شفیعی حل شده توسط پوریا شفیعی

سلام

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

 

سوال بعد اینکه اگه ما یه uri رو همینطوری از اینترنت برداریم و داخل load بذاریم اگه بعدا اون ادرس به هر دلیلی تغییر کنه یا کلا حذف بشه تکلیف برنامه ی ما چی میشه؟فکنم باید از یک جای مطمن عکس برداشت یا از سایت خودمون که مشکلی پیش نیاد

 

و سوال بعد

من دارم یه تمرین انجام میدم که یه ادیت تکست گذاشتم و زیرش یه باتن دانلود و زیرش یه ایمیج ویو کاربر باید uri رو داخل ادیت تکست وارد کنه بعد دانلود رو بزنه و عکس اون پایین نشون داده بشه ولی دانلود که میزنم از اون اکتیویتی میاد بیرون از برنامه خارج نمیشه داخل یک اکتیویتی این کار‌ها رو انجام دادم که از اون خارج میشه عکسش رو هم پایین میذارم

سلام و احترام

 

وقتی تصویری توسط لایبرری پیکاسو لود میشه پیکاسو تصویر شما رو کش میکنه(پس هر بار عمل دانلود انجام نمیشه)

 

ما هیچوقت همینطور مستقیم url ی رو از سایت‌های مختلف قرار نمیدهیم که چنین مشکلی برامون پیش بیاد. (این سرفصل جنبه اموزشی داره)

بلکه شما میاید به api تون متصل میشید و value مربوط به فیلد image که یک url هست رو به متد load پیکاسو میدید و پیکاسو زحمت لود کردنش رو براتون میشه.

اینکه api چی هست و چطوری میتونیم به api متصل بشیم و اطلاعاتمون رو هم دریافت کنیم در سرفصل‌های اینده به اون پرداخته شده.

 

درمورد سوال سوم متوجه نشدم ‘از اکتیویتی میاد بیرون و از برنامه خارج نمیشه" 

بهترین پاسخ
پوریا شفیعی ۲۱ تیر ۱۴۰۰، ۱۸:۲۴

سلام وقت بخیر

سوال اول: این لایبرری عکس دانلود شده رو یک مدت خاص کَش میکنه برای تست این موضوع بعد دانلود شدن عکس اینترنت رو قطع کنید و وارد برنامه بشید مشاهده میکنید که برنامه عکس رو نمایش میده

سوال دوم: شما با متد placeholder میتونید یک عکس جایگزین انتخاب کنید که در صورت دانلود نشدن یا موجود نبودن اون عکس به هر دلیلی این عکس جایگزین نمایش داده بشه

سوال آخر: با استفاده از دیباگینگ مشکل پروژتونو پیدا کنید یا از ارور داخل logcat یک شات بدین ولی بخوام روال کار رو به صورت کلی بگم روی button یک clicklistener سِت کنید وقتی روی button کلیک بشه این interface صدا زده میشه داخل این متد شما باید رشته داخل EditText رو دریافت کنید نه خارج از این متد. بعد از دریافت با استفاده از picasso دانلودش کنید و روی image view سِت کنید البته قبل از دریافت url از EditText عمل validation رو با یک if انجام بدین که برنامتون به مشکل نخوره

میلاد عزیززاده ۲۱ تیر ۱۴۰۰، ۱۸:۳۰

متد oncreate فقط یکبار اجرا میشه توی این متد شما اومدین ویوهاتونو دریافت کردین بعد از اون اومدین متن داخل EditText رو دریافت کردین که چیزی داخلش نیست چرا؟ چون توی این متد یعنی oncreate ویو Activity ساخته میشه و کاربر هنوز چیزی وارد EditText نکرده و بصورت پیش فرض خالیه و در نهایت یک listener سِت کردین که هر وقت روی button کلیک شد یک عملی اتفاق بیوفته خوب دقیقا اینجا کار بلاک oncreate تموم شد یعنی قرار نیست بلاک oncreate دوباره اجرا بشه تا متن داخل EditText رو بگیرین.
فقط اون callback یی که برای button نوشتین در صورت کلیک کردن کاربر روی button دوباره اجرا میشه یعنی داخل بلاک onClick که توی این بلاک شما نیومدین متن جدید داخل EditText رو بخونید اومدین اون متنی که قبلا دریافت کرده بودینو استفاده کردین که در واقع EditText خالی بود و هیچ متنی وجود نداشت

میلاد عزیززاده ۲۱ تیر ۱۴۰۰، ۲۰:۰۲

سلام وقت بخیر من درباره سوالات گفتم تجربه خودم بگم چون همین تمرین انجام دادم برای خودم ببینید وقتی url تعریف میگنید چون مقدار خالی داره مقداری ارسال نمیکنه با یک Toast ساده میشه مقدارش بگیرید خود مقداد edittext استفاده کنید نمایش میده

Mohmmad Rasoul Abdi ۲۲ تیر ۱۴۰۰، ۱۹:۳۹