به نام خدا، دوستان سلام. توی این جلسه با ساختار داده Json آشنا می شویم. Json یک ساختار برای تبادل و ذخیره سازی اطلاعات هست که امروزه بیشنر وب سایت های معتبر برای Api سرویس خود، از این ساختار استفاده می کنند. در این جلسه همچنین به کار با کتابخانه ی Volley را آموزش خواهیم داد.
به دلیل مهم بودن این بخش 2 مثال کاملا متفاوت حل خواهیم کرد، یک مثال مربوط به ساختن یک اپ آب و هوا خواهد بود که اطلاعات آب و هوای کنونی شهر خاصی را نمایش خواهد داد. و در مثال بعدی قسمت هایی که در جلسه ی مربوط به RecyclerView طراحی کردیم را با استفاده از اطلاعات سرور پیاده سازی خواهیم کرد.
مطالب مطرح شده در این جلسه عبارتند از :
- JSON چیست؟
- Json Object
- Json Array
- Json key
- Json value
- ایجاد JsonObject
- دریافت اطلاعات از وب سایت و سرور راه دور با کتابخانه گوگل (Volley)
- Volley چیست؟
- JsonObjectRequest
- JsonArrayRequest
- RequestQueue چیست؟
- آموزش اضافه کردن Request به RequestQueue
- RetryPolicy چیست؟
- ست کردن RetryPolicy روی Request
این مطلب یک جلسه از آموزش برنامه نویسی اندروید می باشد و برای مشاهده آن باید در دوره ثبت نام کنید.
سلام خسته نباشید
استاد در خطی که از RequestQueueاستفاده کردیدمتاسفانه از کلمه ی this من ارور میگیره و مینویسه این نمیتونه برای اکتیویتی شما در خواست بشه.
مرسی اگر کمک کنید.
سلام کدتون رو برام ایمیل کنید تا ببینم مشکلش چیه
سلام استاد
من کلیه کد هایی که وارد کردین رو وارد کردم
تنظیمات مانیفس و کلاس و لایه کاملا درست زدم فیلتر شکن هم روشنه روی سایت هم اطلاعات آب و هوا رو میفرسته ولی تو اندروید استودیو
جواب نمیده و پیام زیر رو میفرسته :
WeatherSampleActivity: onErrorResponse: com.android.volley.NoConnectionError:
java.net.UnknownHostException:
Unable to resolve host “api.openweathermap.org”
No address associated with hostname
دلیل این ارور این هست که سرور شما توسط گوشی اندروید قابل رویت نیست. که این معمولا مربوط به شبکه هست. اگه می خواید از شبیه ساز به سرور متصل بشید از ip 10.0.2.2 استفاده کنید.
سلام استاد
اون قسمت api ادرس . شهر روی لندن تنظیم شده و وقتی تغییر میدم برای تهران و مشهد و … بازم یه نوع خروجی میده و عملا هیچ کاری نمیکنه فقط یک خروجی ثابت داره برای هر شهری که بدی !
تو سایتش نوشته این فقط یک مثال هست و واقعی نیست !!!
میشه یک سایت خوب معرفی کنید که اطلاعاتش واقعی باشه!!
ممنون
یه بار دیگه هم نظر دادم جواب ندادین!
میشه آدرس url این سایت openweathermap که خروجی جیسون برای شهر تهران رو بده
رو برام بفرستین
من هر کاری میکنم فقط یه خروجی اونم تز شهر لندن میده!
سلام این سایت اطلاعاتش واقعیه و مشکلی هم نداره: https://openweathermap.org/api
استاد سلام خسته نباشید
من کدم رو عین مال شما نوشتم
اما نه کد شما کار میکنه نه کد من
جالبه که نه در Log Info چیزی میاد کلا نه در Log Error
چیکار کنم بنظرتون؟
اینم همه ی کد های منه
سلام، مرحله به مرحله باید break point بگذارید و debug کنید ببینید مشکل از کجاس. من که با خوندن کد شما چیزی متوجه نمی شم!
با ریست کردن اندروید استودیو درست شد !
عجیب بود برنخورده بودم تا حالا به این مشکل!
سلام استاد
اگر که بخواهیم از یک CheckBoxAlertDialog اطلاعات رو به سرور ارسال کنیم به چه صورت باید کد نوشته بشه ؟
در واقع برنامه به این شکله که
یک عکس پیش زمینه یک اکتیویتی وجود داره و روی قسمت های محتلف عکس چند باتن قرار داده شده با فشردن هر باتن توسط کاربر CheckBoxAlertDialog
ظاهر میشه ,
اما من چطور آیتم هایی که انتخاب شده از طرف کاربر به سرور ارسال کنم ؟
نکته بعد اینکه برای کمتر شدن حجم برنامه , آرایه String تمام CheckBoxAlertDialog ها را در پوشه Values >> String ایجاد کردم به این دلیل که حدود 200 آیتم هستند
برای ارسال دیتا احتمالا باید همه آرایه ها را داخل اکتویتی ایجاد کنم ! که حجم برنامه بشدت بالا میره
کمک بزرگ و حیاتیِ اگر که راهنمایی بفرمایید و یا معرفی سایتی که بتونه در این مورد خاص کمک کنه
ممنونم
https://stackoverflow.com/questions/16954196/alertdialog-with-checkbox-in-android
سلام استاد عزیز بنده کار با volley رو انجام دادم بدون مشکل ولی شبیه سازی که روی sdk 19 انجام دادم کار ارسال و دریافت انجام نشد ولی روی sdk 20 به بالا درست کار میکنه . من روی شبیه سلز خود اندروید استدیو تست کردم و min sdk:16 و target sdk:26
سلام، ربطی به min sdk نداره چون volley کار می کنه و مشکلی نداره. مشکل از جای دیگه اس، باید مرحله به مرحله دیباگ کنید تا ببینید مشکل کجاس
سلاممم
واقعا مرسی خیلی دوس داشتم این قسمتو
مرسی استاد من واقعا ازتون ممنونم من از تکنیک AsyncTask استفاده میکردم که خیلی پیچیده و ضعیف بود ولی این عالیه مرسی
استاد درست شد ممنون
سلام استاد من کتاب خونه volley گرفتم ولی همین اول JasonObjectRequest برام نمیاره خودمم تایپ میکنم error میده 😥
سلام٬ JsonObjectRequest درسته نه jason و نکته دیگه اینکه امکان داره پروژه رو دوباره بیلد نکردید
سلام استاد. خسته نباشید.
یک سوال برام پیش اومد
تو url شهر به عنوان لندن تعریف شده، ولی شما به تابع GetCurrentWeather تهران رو دادید. نیازی نیست مشخص کنید که تهران با لندن جایگزین بشه؟
توضیحی که برای اینترفیس دادید برام خیلی زمان برد تا متوجه بشم، سطح بالا بود
تا اینکه دوستم به این صورت گفت و با یک جمله :
با اینترفیس میشه کلاسهایی ایجاد کرد که توابعش در کلاسهای دیگه قابل override شدن باشه
سلام، چرا! اصلا داخل url باید پارامتر تابع قرار داده بشه، من برای مثال همون لندن گذاشتم توی url باشه.
interface یه قرارداد هستش که می گه هرکس می خواد منو Implement کنه باید این توابع رو پیاده سازی کنه. این ساده ترین تعریف interface هستش.