به نام خدا
سلام و عرض ادب خدمت شما همه کاربران عزیز سایت جاواپرو
امیدوارم هرکجا که هستید حالتون خوب و ایام به کامتون باشه
با جلسه هفدهم از دوره آموزشی ساخت اینستاگرام در خدمت شما عزیزان هستیم
در این جلسه ما میخوایم لیست پست ها را درون اپلیکیشنمون نشون بدیم
پس با ما همراه باشید
قبل از شروع این جلسه یک نکته رو بررسی کنیم
ما در جلسه قبل فراموش کردیم برای پروفایل کاربر هم یک فیلد در دیتابیس تعریف کنیم
پس سرور مجازی رو راه اندازی میکنیم و به ادرس localhost/phpmyadmin میریم
به دیتابیسمون میریم و پس اون به جدول post میریم
به سربرگ structure میریم و مطابق تصویر یک میگیم یک ستون پس از caption اضافه کن و go رو میزنیم
مطابق تصویر 2 اسمش رو میذاریم profile از نوع text باشه و مقدار پیش فرض یا همون default هم میذاریم null باشه و
بعد از اون روی save کلیک میکنیم تا اضافه بشه.
برمیگردیم به بحث اصلیمون
بنده کلیات کار رو عرض کنم همین ابتدا تا بعد پیاده سازی دقیق برسیم.
کلیات به این شکل هست که ما باید در سمت کلاینت یک درخواست بدیم و هرچی که توی دیتابیس و جدول post هست رو دریافت کنیم و توی برنامه نشونش بدیم
به همین سادگی!
پروژه مون رو باز میکنیم کتابخونه پیکاسو لازم داریم برای دانلود عکس ها اونو به این شکل در build.gradle(module:app) اضافه میکنیم و بعد از اطمینان از روشن بودن تحریم شکن پروژه رو سینک میکنیم که به پروژه اضافه بشه:
implementation 'com.squareup.picasso:picasso:+' |
کتابخانه 1
حالا یه کلاس جدید میسازیم به اسم PostProperty و به ازای هر ستون توی دیتابیس یک متغیر توی
کلاسمون تعریف میکنیم و سازنده و getter, setter برای هرکدومشون تعریف میکنیم به این شکل:
public class PostProperty { String id,username,location,image,caption,profile; public PostProperty(String id, String username, String location, String image, String caption,String profile) { public String getId() { public void setId(String id) { public String getUsername() { public void setUsername(String username) { public String getLocation() { public void setLocation(String location) { public String getImage() { public void setImage(String image) { public String getCaption() { public void setCaption(String caption) { } public String getProfile() { public void setProfile(String profile) { |
نمونه کد 1
شاید بپرسید دلیل تعریف این کلاس چی بود؟
اطلاعاتی که از سمت سرور میاد در قالب آرایه ای از json میاد و با استفاده از این کلاس و لیستی که از این کلاس میسازیم اطلاعات رو از json میگیریم و توی این لیست ذخیره میکنیم و لیست رو هم میدیم به recyclerview که بهمون نشون داده بشه.
ابتدا میریم و سمت سرور رو برنامه نویسی میکنیم
یک فایل php جدید توی فولدر Instagram موجود در فولدر htdocs سرور مجازیمون میسازیم به اسم loadpost.php و
با notepad++ سمت سرور رو برنامه نویسی میکنیم.
تگ php رو باز میکنیم و اتصال به دیتابیس رو برقرار میکنیم مطابق جلسات قبل به این شکل:
<?php define('HOST','localhost'); |
نمونه کد 2
حالا که اتصالمون به دیتابیس برقرار شد باید کوئری بنویسیم و هرچی که توی دیتابیسمون هست رو بگیریم به این شکل:
$stmt=$cnn->prepare(" select id, username, location, image, caption, profile from post"); |
نمونه کد 3
بعد از اون باید یک آرایه بسازیم و هرچی که از دیتابیس در میاد رو بریزیم توی این آرایه به این شکل:
$post=array(); while($stmt->fetch()){ $temp=array(); $temp['id']=$id; $temp['username']=$username; $temp['location']=$location; $temp['image']=$image; $temp['caption']=$caption; $temp['profile']=$profile; array_push($post,$temp); } |
نمونه کد 4
با نمونه کد 4 ما یک ارایه میسازیم و هرچی که از دیتابیس میاد رو با استفاده از ارایه کمکی درونش میریزیم
حالا وقتشه که این ارایه $post رو به فرمت json بفرستیم به سمت کلاینتمون(کاربرمون)
به این شکل:
echo json_encode($post); mysqli_close($cnn); |
نمونه کد 5
کد کلی اتصال به سرور:
while($stmt->fetch()){ ?>
|
نمونه کد 7
حالا میریم سمت اندروید و درخواست میدیم به این فایل php
به HomeFragment میریم و باید اینجا یک متد تعریف کنیم برای درخواست به سرور و همچنین چندین متغیر برای نشون دادن پست ها به کاربرمون.
ابتدا متغیر ها رو تعریف میکنیم به این شکل:
RecyclerView recyclerView; LinearLayoutManager layoutManager; PostAdapter adapter; ArrayList<PostProperty> allposts; RequestQueue queue; |
نمونه کد 2
پس از اون توی onCreateView مقدار دهیشون میکنیم به این شکل:
View view = inflater.inflate(R.layout.fragment_home, container, false); loadPosts(); return view; |
نمونه کد 9
نمونه کد 10 رو ملاحظه بفرمایید یک متد داریم به نام loadPosts() که درخواست به سرور رو انجام میده
پس باید این متد رو تعریف کنیم
بنده تمام کد متد و همچنین درخواست رو میذارم و بعد توضیح میدم خدمتتون:
private void loadPosts() {
|
نمونه کد 10
ما باز هم به استفاده از volley درخواست میدیم
دلیل اینکه از androidnetworking که ابتدای دوره عرض کردم استفاده نمیکنم اینه که volley بسیار شناخته شده تر است و در پروژه های گروهی شما androidnetworking کمتر به کار میاید.
یک درخواست به سرور به وسیله فایل loadpost.php میدیم و پاسخمون رو به صورت json میگیریم و درون یک لیست از نوع PostProperty ذخیره میکنیم و این لیست رو هم که در onCreateView به ریسایکلرویو برای نمایش میدیم.
حالا باید این متد رو در onResume هم صدا بزنیم که که کاربر بین صفحات جابجا شد و دوباره به همین صفحه برگشت هم پست ها نمایش داده بشن.
کلید های ترکیبی ctrl+o رو فشار میدیم و تایپ میکنیم onResume و متد رو override میکنیم و این متد loadpost رو درونش فراخوانی میکنیم به این شکل:
@Override public void onResume() { loadPosts(); super.onResume(); } |
نمونه کد 11
کد کلی و نهایی HomeFragment به این شکل است:
public class HomeFragment extends Fragment { public HomeFragment() { } public static HomeFragment newInstance() { @Override } @Override @Override private void loadPosts() { |
نمونه کد 12
حالا به کلاس PostAdapter میریم تا اطاعات رو به ریسایکلر ویو ست کنیم.
ابتدا یک لیست از نوع PostProperty میسازیم و در سازنده این لیست رو مقدار دهی میکنیم به این شکل:
Context context; } |
نمونه کد 13
Context و LayoutInflater در جلسات قبل تعریف شده است و شما فقط List<PostProperty> allPosts; رو تعریف کنید و به سازنده بدین و درون سازنده هم مقدار دهی کنید.
حالا به onBindViewHolder میریم و به این شکل مقدار دهی میکنیم:
امید است افرادی که از تمکن مالی برخوردار هستند برای بقای سایت جاواپرو و رایگان ماندن آموزش ها از سایت جاواپرو حمایت مالی کنند.
ادامه حیات سایت جاواپرو به حمایت مالی (دونیت) از طرف شما کاربر عزیز بستگی دارد.... |
لینک دانلود جلسه هفدهم آموزش ساخت برنامه شبیه به اینستاگرام
با عضویت در کانال تخصصی برنامه نویسی جاوا و اندروید جاواپرو از ما حمایت کنید
پیج اینستاگرام جاواپرو شامل کلیپ های فان و مقالات برنامه نویسی
بستن *نام و نام خانوادگی * پست الکترونیک * متن پیام |
دوره های آموزشی برنامه نویسی
انجام پروژه های برنامه نویسی
تدریس خصوصی برنامه نویسی
بیش از 7 سال از فعالیت جاواپرو میگذرد
جاواپرو دارای مجوز نشر دیجیتال از وزارت فرهنگ و ارشاد اسلامی است
جهت ارتباط مستقیم با جاواپرو در واتساپ و تلگرام :
09301904690
بستن دیگر باز نشو! |