دوره مجازی اندروید (جلسه 10): پیاده سازی لیست با RecyclerView

‏  1 دقیقه
۰۱ مرداد ۱۳۹۵
دوره مجازی اندروید (جلسه 10): پیاده سازی لیست با RecyclerView

به نام خدا. سلام، توی این جلسه می خواهیم یک لیست رو با استفاده از RecyclerView پیاده سازی کنیم و با مفاهیم Model ، Adapter و LayoutManager آشنا بشویم. همچنین در آخر جلسه ScrollView رو هم معرفی می کنیم.

مطالب مطرح شده در این جلسه عبارتند از :

  • Recycler View چیست؟
  • List View چیست؟
  • تفاوت های ListView و Recycler View
  • پیاده سازی لیست با Recycler View
    • آشنایی با مفهوم Recycling
    • آموزش کار با Adapter
    • آموزش کار با ViewHolder
    • معرفی LayoutManger
    • پیاده سازی لیست تک ستونه با Linear Layout Manager
    • پیاده سازی لیست های چند ستونه با Grid Layout Manger
    • پیاده سازی لیست افقی
    • پیاده سازی لیست های در هم ریخته Staggered Layout Manager
  • معرفی و استفاده از ScrollView
:: توجه

این مطلب یک جلسه از آموزش برنامه نویسی اندروید می باشد و برای مشاهده آن باید در دوره ثبت نام کنید.

ثبت نام در آموزش برنامه نویسی اندروید

چه امتیازی به این مقاله می دید؟
نویسنده سعید شاهینی

جلسات دوره

پایان زمان پشتیبانی

دانشجوی گرامی، بازه پشتیبانی فعال برای این دوره ۳ ماه است که برای شما به پایان رسیده است.

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

نیاز به لاگین

برای ارسال دیدگاه و یا پرسیدن سوال خود در این قسمت، باید در سایت لاگین شوید.

نظرات کاربران

علی جهانی

موقع ران کردن با این ارور روبرو میشم …
NAMESPACE_ERR: An attempt is made to create or change an object in a way which is incorrect with regard to namespaces.

Realali 13771377

سلام و خسته نباشید
استاد اگه در کلاس Datamodel متغیرها را رو پابلیک تعریف کنیم در کلاس DataFakeGenerator چجوری باید مقداردهیشون کنیم؟
پیشاپیش ممنون

Realali 13771377

یه سوال دیگه هم دارم استاد
ببخشید سوالام مبتدی هست
این itemView دقیقا کارش اینجا چیه؟
(در کلاس newViewHolder )

ImageView iv=(ImageView) itemView.findViewById(R.id.iv);
سعید شاهینی

سلام، وقت بخیر، itemview همون view ای هست که داخل onCreateViewHolder اون رو تعریف کردیم، چون ImageView آیتم ما داخل اون itemView هست باید روی اون متد findviewbyid صدا زده بشه

Realali 13771377

سلام و خسته نباشید میشه بفرمایید این کدها در ریسایکلر ویو دقیقا کارشون چیه؟ (کلاس newAdapter و متد onBindViewHolder)
منظورم اینه چه ساختاریه

holder.image.setText(post.getTitle());
fatemeh105

سلام استاد
من بعد از اضافه کردن کتابخانه ریسایکلر ویو دیگه برنامه ران نمیشه و همچین اخطاری میده .باید چیکار کنم در جواب یکی از دوستان پاسخ دادین ولی خوب چه طور باید 27.1.1رو اضاف کرد؟؟؟؟
Error:Execution failed for task ‘:app:processDebugManifest’.
> Manifest merger failed : Attribute meta-data#[email protected] value=(25.3.1) from [com.android.support:appcompat-v7:25.3.1] AndroidManifest.xml:27:9-31
is also present at [com.android.support:recyclerview-v7:26.0.0-alpha1] AndroidManifest.xml:24:9-38 value=(26.0.0-alpha1).
Suggestion: add ‘tools:replace=”android:value”‘ to element at AndroidManifest.xml:25:5-27:34 to override.

fatemeh105

سلام استاد
من بعد از اضافه کردن کتابخانه ریسایکلر ویو دیگه برنامه ران نمیشه و همچین اخطاری میده .باید چیکار کنم در جواب یکی از دوستان پاسخ دادین ولی خوی چه طور باید 27.1.1رو اضاف کرد؟؟؟؟
Error:Execution failed for task ‘:app:processDebugManifest’.
> Manifest merger failed : Attribute meta-data#[email protected] value=(25.3.1) from [com.android.support:appcompat-v7:25.3.1] AndroidManifest.xml:27:9-31
is also present at [com.android.support:recyclerview-v7:26.0.0-alpha1] AndroidManifest.xml:24:9-38 value=(26.0.0-alpha1).
Suggestion: add ‘tools:replace=”android:value”‘ to element at AndroidManifest.xml:25:5-27:34 to override.
با تشکر

محمدرضا

با سلام خدمت آقای شاهینی
شما در این جلسه از adapter استفاده کردید اگه میتونید تفاوت انواع adapter رو بگید
برای مثال array adapter با base adapter و یا با list adapter چه فرقی داره و هر کدوم در کجاها کاربرد دارند؟

علی خاکساری

سلام استاد خواهش میکنم جواب من رو بدید
اگر هم سوالم مبتدی هست ولی خیلی کارم گیره باید این رو درست کنم توی برنامه ام واقعا ممنونم میشم من ایمیل هم دوبار زدم جواب ندادید
اگه امکانش باشه تماس بگیرم
من میخواستم یه دکمه ای طراحی کنم برای RecyclerView که با استفاده از اون حالت چیدمان لیست از LinearLayout به GridView تغیر کنه شبه همون چیزی که در دیجی کالا هست
چیز خاصی در موردش توی نت پیدا نکردم
میشه لطفا راهنمایی کنید چجوری باید درستش کنم یا اگه مقاله ای هست معرفی کنید
خیلی ممنونم

علی خاکساری

سلام استاد خسته نباشید
من میخواستم یه دکمه ای طراحی کنم برای RecyclerView که با استفاده از اون حالت چیدمان لیست از LinearLayout به GridView تغیر کنه شبه همون چیزی که در دیجی کالا هست
چیز خاصی در موردش توی نت پیدا نکردم
میشه لطفا راهنمایی کنید چجوری باید درستش کنم یا اگه مقاله ای هست معرفی کنید
خیلی ممنونم

حسین غلامی

سلام استاد
من بعد از اضافه کردن کتابخانه ریسایکلر ویو دیگه برنامه ران نمیشه و همچین اخطاری میده .
Error:Execution failed for task ‘:app:processDebugManifest’.
> Manifest merger failed : Attribute meta-data#[email protected] value=(25.3.1) from [com.android.support:appcompat-v7:25.3.1] AndroidManifest.xml:27:9-31
is also present at [com.android.support:recyclerview-v7:26.0.0-alpha1] AndroidManifest.xml:24:9-38 value=(26.0.0-alpha1).
Suggestion: add ‘tools:replace=”android:value”‘ to element at AndroidManifest.xml:25:5-27:34 to override.
با تشکر

fatemeh105

این مشکل چه طوری حل کردید

سعید شاهینی

سلام ورژن recyclerView که اضافه شده برای شما: 26.0.0.-alpha1 هست که باید به جای اون از 27.1.1 استفاده کنید

فردین عباسی

سلام استاد
در کد پایین وقتی context رو با c کوچیک میزنم error میده (کل کلمه context قرمز میشه) وقتی c رو با حرف بزرگ مینویسم زیر کلمه getResources() قرمز میشه
در صورتی که در ویدئو شما c در context با حرف کوچیک هست نه context ونه getResources ارور میدن

ممنون میشم راهنماییم کنید

switch (i){
                case 1:
                    postModel.setPostImage(ResourcesCompat.getDrawable(context.getResources(),R.drawable.pic1,null));
                    break;
            }
فردین عباسی

سلام استاد
ممنون حواسم نبود context رو تعریف نکرده بودم

سعید شاهینی

سلام دلیلش این هست که نمی تونه آبجکت context رو پیدا کنه، آیا متغیر context رو اصلا تعریف کردید؟

saghar saberi

سلام.
من وقتی میخوام کتابخانه recyclerview اضافه کنم error زیر رو میده. از vpn هم استفاده میکنم.ممنون میشم بگید چطور حلش کنم.ایمیل هم فرستادم واستون و اسکرین گرفتم
Failed to resolve: recyclerview-v7
Open File

سعید شاهینی

سلام، vpn ای که استفاده می کنید باید سیسکو باشه فقط اونه که کار می کنه در حال حاضر.

سحر آزاد

سلام. خیلی ممنون بابت آموزش خوبتون و به خصوص صدای رسا در زمان ضبط ویدئو

من کد رو که اجرا می کنم تصویر رو نشون نمیده و فقط متن ها به نمایش درمیان. بالطبع وقتی tools رو هم در layout به android تغییر میدم فقط همان عکس اول برای تمام اخبار نمایش داده می شه. نمی تونم اشکالش رو پیدا کنم و ممنون می شم راهنمایی بفرمایید.

سعید شاهینی

سلام یک اسکرین شات از کدهای لایوت xml بگیرید و برام ارسال کنید تا مشکلش رو پیدا کنم