هم اکنون عضو شوید

ورود

فراموشی گذرواژه

گذروازه خود را فراموش کردید ؟

ورود

عضو شوید

با عضویت در سایت از امکانات فوق العاده بهرمنده خواهید شد.

آموزش CardView و Mysql در برنامه نویسی اندروید

آموزش CardView و Mysql در برنامه نویسی اندروید

سلام دوستان امیدوارم حالتون خوب باشد در این سری از آموزش برنامه نویسی اندروید به آموزش CardView و Mysql در برنامه نویسی اندروید می پردازیم در این آموزش داده های ما در دیتابیس mysql قرار می گیرند سپس با استفاده از فایل php این داده ها خوانده می شوند و به json تبدیل می شوند سپس در برنامه قرار می گیرد در ادامه می توانید پیش نمایشی از آن را مشاهده کنید با ما همراه باشید.

 

 

ابتدا ما به یک دیتابیس نیاز داریم وارد سرور خود شده یک دیتابیس ایجاد کرده یا در xammp (مجازی ساز ویندوزی) این کار را انجام دهید. در دیتابیس ساخته شده یک جدول به نام my_data با سه فیلد به نام های id , description , image ایجاد کرده و id را برابر با Primary key قرار دهید در آن چند Insert انجام دهید حتما در بخش Image باید آدرس عکس باشد و id هم باید منحصر به فرد باشد و پشت سرهم (یعنی ۱ و ۲ و ۳ و…) و در بخش description یک متن تست قرار دهید از عکس زیر هم می توانید استفاده کنید.

 

lما ۴ داده تست در آن ها Insert کرده ایم.

 

بعد از اینکه دیتابیس را جدول و فیلدهای ایجاد کردید یک فایل php به نام script.php در سرور یا در local مربوط به xampp (پوشه htdocs) ایجاد کرده و کدهای زیر را در آن قرار دهید.

شما باید در بالا فیلد mysqli_connect را تغییر دهید (localhost را تغییر ندهید ) باید به جای my_user یوزر دیتابیستون و به جای my_password پسوردی که برای یوزر گذاشتید و به جای my_db نام دیتابیس را قرار دهید (نام جدول نیست !)

کد بالا داده ها را از دیتابیس خونده و به صورت json نمایش می دهد.

در این آموزش ما با چهار کتاب خانه کار خواهیم کرد که عبارتند از :

  • okhttp
  • cardview
  • recyclerview
  • glide

ابتدا وارد فایل Build.gradle از نوع Module شده سپس در بخش dependencies خط های زیر اضافه کنید.

پروژه را sync کنید.

وارد فایل AndriodManifest.xml شده و دسترسی زیر را اضافه کنید.

در پوشه layout یک فایل به نام card.xml ایجاد کرده و کدهای زیر را در آن قرار دهید.

در بالا شکل ظاهری هر آیتم ایجاد شده است که در ادامه از آن استفاده می کنیم و آن را در layout اصلی Inflate می کنیم.

و باید در layout اصلی که نام آن برابر با activity_main.xml کد زیر را قرار دهید.

در بالا یک RecyclerView قرار داده شده است تا card.xml در آن Render شود.

حالا باید یک فایل به نام CustomAdapter.java ایجاد کرده و کدهای زیر را در آن قرار دهید این همان آداپتور سفارشی ما است.

کد بالا همان getter و setter است .

بعد از اینکه آداپتور را ایجاد کردید یک کلاس جاوا به نام MyData.java ایجاد کرده و کدهای زیر را در آن قرار دهید.

این کلاس هم باز getter و setter است ولی برای json ما که از سرور دریافت می شود.

و در آخر باید وارد اکتویتی اصلی که در اینجا نام آن برابر با MainActivity.java است کدهای زیر را قرار دهید.

در بالا به سرور reuqst ارسال می شود تا داده ها دریافت شود بر اساس هر آیدی داده دریافت شده و در Card قرار می گیرد برای انجام request از okhttp استفاده شده است دفت کنید باید در کد بالا خط زیر را تغییر دهید.

دقت کنید فقط همین بخش بقیه را نباید تغییر دهید در اینجا از کلاس Async Task استفاده کردیم تا عملیات در Background انجام شود. برای اینکه به شکل دوتایی در کنار هم قرار گیرند از GridLayoutManager استفاده کردیم (قبلا آموزشش را قرار داده بودیم)

 

این آموزش هم به پایان رسید.

 

موفق و پیروز باشید.

درباره نویسنده

با زبان های برنامه نویسی C# , Java , Php به صورت تخصصی کار کردم و بیشتر وقتم رو در برنامه نویسی می گذرونم علاقه زیادی به ساخت اپلیکیشن اندروید دارم.

نظرها ( ۸ )

  1. ناشناس
    ۵, آبان , ۱۳۹۶ در ۵:۳۲ ب.ظ

    سلام. من طبق آموزش شما پیش رفتم ولی خطای زیر به من نشون داده میشه و صفحه اپلیکیشن یه صفحه سفید بدون حتی اکشن بار میشه

    ۱۰-۲۷ ۰۹:۵۱:۱۴٫۷۴۳ ۵۶۲-۸۲۶/system_process I/ActivityManager: START u0 {act=android.intent.action.DELETE dat=package:app.my.project flg=0x10800000 cmp=com.android.packageinstaller/.UninstallerActivity} from pid 1613
    ۱۰-۲۷ ۰۹:۵۱:۱۷٫۲۳۹ ۵۶۲-۵۷۹/system_process I/ActivityManager: Force stopping package app.my.project appid=10052 user=-1
    ۱۰-۲۷ ۰۹:۵۱:۱۷٫۲۴۳ ۵۶۲-۵۹۷/system_process W/PackageManager: Couldn’t delete native library directory /data/app-lib/app.my.project
    ۱۰-۲۷ ۰۹:۵۱:۱۷٫۲۶۳ ۵۶۲-۵۹۷/system_process I/ActivityManager: Force stopping package app.my.project appid=10052 user=0
    ۱۰-۲۷ ۰۹:۵۱:۱۷٫۲۹۵ ۵۶۲-۵۷۵/system_process D/BackupManagerService: Received broadcast Intent { act=android.intent.action.PACKAGE_REMOVED dat=package:app.my.project flg=0x8000010 (has extras) }
    ۱۰-۲۷ ۰۹:۵۱:۱۷٫۳۲۳ ۸۰۴-۳۱۶۵۹/android.process.acore D/VoicemailCleanupService: Cleaning up data for package: app.my.project
    ۱۰-۲۷ ۰۹:۵۱:۲۷٫۵۰۷ ۵۶۲-۵۹۷/system_process W/ActivityManager: No content provider found for permission revoke: file:///data/local/tmp/app.my.project
    ۱۰-۲۷ ۰۹:۵۱:۲۷٫۵۰۷ ۵۶۲-۵۹۷/system_process W/ActivityManager: No content provider found for permission revoke: file:///data/local/tmp/app.my.project
    ۱۰-۲۷ ۰۹:۵۱:۲۷٫۶۷۱ ۵۶۲-۵۹۷/system_process I/PackageManager: Running dexopt on: app.my.project
    ۱۰-۲۷ ۰۹:۵۱:۲۷٫۹۴۷ ۵۶۲-۵۷۹/system_process I/ActivityManager: Force stopping package app.my.project appid=10052 user=-1
    ۱۰-۲۷ ۰۹:۵۱:۲۷٫۹۸۳ ۵۶۲-۵۷۵/system_process D/BackupManagerService: Received broadcast Intent { act=android.intent.action.PACKAGE_ADDED dat=package:app.my.project flg=0x8000010 (has extras) }
    ۱۰-۲۷ ۰۹:۵۱:۲۸٫۴۷۱ ۵۶۲-۱۲۴۰/system_process I/ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=app.my.project/.MainActivity} from pid 31690
    ۱۰-۲۷ ۰۹:۵۱:۲۸٫۵۴۷ ۵۶۲-۱۲۳۶/system_process I/ActivityManager: Start proc app.my.project for activity app.my.project/.MainActivity: pid=31700 uid=10052 gids={50052, 3003, 1028}
    ۱۰-۲۷ ۰۹:۵۱:۲۹٫۸۳۵ ۳۱۷۰۰-۳۱۷۰۰/app.my.project W/EGL_genymotion: eglSurfaceAttrib not implemented
    ۱۰-۲۷ ۰۹:۵۱:۲۹٫۸۳۵ ۳۱۷۰۰-۳۱۷۰۰/app.my.project E/OpenGLRenderer: Getting MAX_TEXTURE_SIZE from GradienCache
    ۱۰-۲۷ ۰۹:۵۱:۲۹٫۹۱۵ ۳۱۷۰۰-۳۱۷۰۰/app.my.project E/OpenGLRenderer: Getting MAX_TEXTURE_SIZE from Caches::initConstraints()
    ۱۰-۲۷ ۰۹:۵۱:۲۹٫۹۱۹ ۳۱۷۰۰-۳۱۷۰۰/app.my.project D/OpenGLRenderer: Enabling debug mode 0
    ۱۰-۲۷ ۰۹:۵۱:۲۹٫۹۱۹ ۳۱۷۰۰-۳۱۷۰۰/app.my.project I/Choreographer: Skipped 73 frames! The application may be doing too much work on its main thread.
    ۱۰-۲۷ ۰۹:۵۱:۳۰٫۷۵۵ ۵۶۲-۵۷۸/system_process I/ActivityManager: Displayed app.my.project/.MainActivity: +2s215ms

    لطفا راهنمایی کنید.
    با تشکر

  2. ۲۳, آبان , ۱۳۹۶ در ۸:۴۳ ق.ظ

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

    • محمد حسین جعفری پور
      ۲۴, آبان , ۱۳۹۶ در ۲:۳۱ ب.ظ

      سلام و درود
      دوست عزیز ابتدا به صورت debug جلو برید و بررسی کنید که در چه بخشی به خطا می خورید و امکان ارسال یا قرار دادن سورس وجود ندارد url که فرستادید رو بررسی کردم مشکلی نداشته و json به درستی ایجاد شده است مطمئنن در بخش pasrse جیسون مشکل دارید logcat قرار دهید تا بررسی کنیم
      موفق باشید.

  3. ۲۳, آبان , ۱۳۹۶ در ۸:۴۵ ق.ظ

    اینم فایل script من
    masalro.ir/script.php

  4. ۲۴, آبان , ۱۳۹۶ در ۹:۵۱ ق.ظ

    درود و خسته نباشید چیشد؟

  5. حمید
    ۹, اسفند , ۱۳۹۶ در ۸:۱۸ ب.ظ

    با سلام و خسته نباشید خدمت شما
    اول از هر چیز خواستم از زحمات شما تشکر کنم
    من این برنامه را نوشتم و از سرور مجازی xampp استفاده می کنم.
    همه چیز درسته و برنامه اجرا میشه و cardView به اندازه رکوردهای ثبت شده من در دیتابیس (که ۳ رکورد هست) نمایش داده میشه
    اطلاعات url عکس هم از طریق json وارد برنامه میشه ( توسط Toast خروجی گرفتم و آدرس url عکس به درستی نشون داده شد)
    ولی مشکلی که دارم عکس های مربوطه در cardView نشون داده نمیشه و در خروجی برنامه سه card خالی به من نشون میده.
    خواستم دلیلشو بدونم برنامه مشکلی داره یا به خاطر اینکه از سرور مجازی استفاده می کنم cardView نمی تونه عکسها رو load کنه
    با تشکر

    • محمد حسین جعفری پور
      ۱۱, اسفند , ۱۳۹۶ در ۱:۴۹ ب.ظ

      سلام و درود چک کنید دسترسی اینترنت را قرار داده باشید و کدها را با استفاده از layout inspector چک کنید که آیا واقعا عکس ها لود نمیشه یا خیر.
      موفق باشید.