رفتن به مطلب

آموزش تصویری کار با RecyclerView


امین شاهدی

ارسال‌های توصیه شده

با سلام ، این آموزش شروع کار با RecyclerView هستش که خب خیلی هاتون میدونین این ویو دیگه تقریبا جایگزین ListView و GridView شده و خب قدرت و کارایی و سرعت و خلاصه از همه لحاظ کلی ارتقا پیدا کرده نسبت به لیست ویو و گرید ویو ، توی این آموزش هم ساخت adapter و نمایش لیوت ها و اطلاعات با RecyclerView و CardView رو یاد میگیرین و خب یه ذره انیمیشن هم برای اضافه و کم کردن آیتم ها و . . . هم توضیح دادم ، آموزش های بعدی برای Swip و .. آیتم ها رو هم تا چند روز دیگه ضبط میکنم

 

دانلود 47mb

 

 

 

recyclerview-cardview.png

لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • 3 هفته بعد...
  • پاسخ 51
  • ایجاد شده
  • آخرین پاسخ

سلام و تشکر از زحمتی که کشیدین

یه سوال داشتم

تو اسکرول اکتویتی چجوری میشه از این استفاده کرد من هر کاری میکنم چیزی نشون نمیده

 

اندروید استودیوم 1.5.1 و از اسکرول اکتیویتی پیش فرضش استفاده میکنم

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام هموطن
ببین اسکرول اکتیویتی که شما میگی، فقط یک ویو رو قبول میکنه
مثلا یه تکست ویو رو
باید یه RelativeLayout دیگه درست کنید و هر چیزی که میخواین رو توش قرار بدید
بعد include کنید به لایه اصلیتون
به شکل زیر

<include layout="@layout/layout_name" />

مثلا من لایه زیر رو ساحتم

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ScrollView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/scrollView"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true" >
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">
          <android.support.v7.widget.RecyclerView
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:layout_marginTop="50dp"
android:id="@+id/recycler1">
</android.support.v7.widget.RecyclerView>
        </RelativeLayout>
    </ScrollView>
</RelativeLayout>

و به لایه activity خودم، incude اش کردم

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:fitsSystemWindows="true"
    tools:context="es.shahab.testcustome.content_act">
    <android.support.design.widget.AppBarLayout android:id="@+id/app_bar"
        android:fitsSystemWindows="true" android:layout_height="@dimen/app_bar_height"
        android:layout_width="match_parent" android:theme="@style/AppTheme.AppBarOverlay">
        <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/layeAsli"
            android:fitsSystemWindows="true" android:layout_width="match_parent"
            android:layout_height="match_parent" app:layout_scrollFlags="scroll|exitUntilCollapsed"
            app:contentScrim="?attr/colorPrimary">
            <android.support.v7.widget.Toolbar android:id="@+id/toolbar"
                android:layout_height="?attr/actionBarSize" android:layout_width="match_parent"
                app:layout_collapseMode="pin" app:popupTheme="@style/AppTheme.PopupOverlay" />
        </android.support.design.widget.CollapsingToolbarLayout>
    </android.support.design.widget.AppBarLayout>




    <include layout="@layout/content_content_actscroll" />




    <android.support.design.widget.FloatingActionButton android:id="@+id/fab"
        android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:layout_margin="@dimen/fab_margin" app:layout_anchor="@id/app_bar"
        app:layout_anchorGravity="bottom|start" android:src="@android:drawable/ic_dialog_email" />
</android.support.design.widget.CoordinatorLayout>

لینک ارسال
به اشتراک گذاری در سایت های دیگر

آقا دمت گرم حل شد :ok:

 

فقط یه سوال دیگه من این ریسایکل ویو رو به یه مولتی پنل نسبت دادم که میاد استرینگ ها رو از دیتابیس میخونه و نمایش میده حالا میخوام مثه اسکرول ویو تو بیسیک وقتی می رسه آخر آیتمای جدید لود بشه یا اینکه یه جوری که سنگین نشه اطلاعاتش رو یه جا بگیره ممنون میشم راهنمایی کنید

لینک ارسال
به اشتراک گذاری در سایت های دیگر

آقا دمت گرم حل شد :ok:

 

فقط یه سوال دیگه من این ریسایکل ویو رو به یه مولتی پنل نسبت دادم که میاد استرینگ ها رو از دیتابیس میخونه و نمایش میده حالا میخوام مثه اسکرول ویو تو بیسیک وقتی می رسه آخر آیتمای جدید لود بشه یا اینکه یه جوری که سنگین نشه اطلاعاتش رو یه جا بگیره ممنون میشم راهنمایی کنید

عزیزم

کلا فک کنم متوجه ریسایکل ویو نشدید که چی چیه :gol:

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

چیز دیگه که اشاره کردی بهش اینه که تو اگه 3-4 میلیون ایتمم بدی به این، میاد و چندتا قبل اولین ایتیمی که الان مشخص هست و چند بعد اخرین ایتمی که مشخصه تو صفحه گوشی رو میگیره از اون لیستی که بهش دادی، به محضه اینکه یه ایتم اومد پایین، یه ایتم از بالا کم میکنه، یعنی در اصل همون لود دونه دونه ای که شما بهش اشاره کردی

اصلا کندی نداره، لیمیت و این کارا هم لازم نیست، من همین الان خودم تو اپ خودم 2000 تا دقیق ایتم باهاش لود میکنم و مشکلی نداره...

عکسارو بنگر لدفن :)

 

 

https://camo.githubusercontent.com/9ec060191347dd366729c095b529ed21e763a075/68747470733a2f2f692e696d6775722e636f6d2f535a38694b75752e6a7067

 

https://camo.githubusercontent.com/32bae7fa8cfbe331e90d50273731694b8a37a444/68747470733a2f2f692e696d6775722e636f6d2f7a706b56554d522e706e67

لینک ارسال
به اشتراک گذاری در سایت های دیگر

خیلی ممنون داش

 

یه زحمت دیگه  :)

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

لینک ارسال
به اشتراک گذاری در سایت های دیگر

خیلی ممنون داش

 

یه زحمت دیگه  :)

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

 

واژه مولتی پنل اصلا مناسب ریسایکلر ویو نیست ، واسه کلیک لیستنر هم میتونین توی همون کلس ViewHolder این کار رو انجام بدی ، مثال

    public class MyViewHolder extends RecyclerView.ViewHolder {
     CardView cardView;
        public MyViewHolder(View itemView) {
            super(itemView);
            cardView = (CardView) itemView.findViewById(R.id.cardView);
            cardView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //inja harkari ke mikhain bokonin
                }
            });
        } 

برای افکت کلیک شدن به کاردویو هم این دوتا کد رو به xml کارد ویو اضافه کنید : 

   android:foreground="?android:attr/selectableItemBackground"
   android:clickable="true" 
لینک ارسال
به اشتراک گذاری در سایت های دیگر

 آقای شاهدی ببخشید یه سوال دیگه عزیز

اگه تو کارد ویو یه دونه تکست ویو باشه و بخوایم ارتفاعش با اندازه متنمون تغیر کنه چیکار باید بکنیم

لینک ارسال
به اشتراک گذاری در سایت های دیگر

دوستان کسی بلد نیست چجوری ارتفاع تکست ویو رو با اندازه متن مچ کنم؟؟؟ تو کارد ویو البته

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام دلاور

توی کارد ویو و همینطور Relative layout داخلیش و همینطور تکست ویویی که داری، باید layout_height رو برابر wrap_content قرار بدی...

پس تو لایه ای که طراحی کردی هر جا ارتفاع خواست و مربوط به متنت بود

کد زیر رو بذار توی تگ xml اون کنترل

android:layout_height="wrap_content"
لینک ارسال
به اشتراک گذاری در سایت های دیگر

:ok: خیلی ممنون برادر این درست شد یه جا دیگش درست نمیشه  :)

 

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

لینک ارسال
به اشتراک گذاری در سایت های دیگر

:ok: خیلی ممنون برادر این درست شد یه جا دیگش درست نمیشه  :)

 

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

 

برای دسترسی به assetsManager و یا هرجایی کافیه اول اسم context رو وارد کنی و بعد یه . بزنی و به assets , resource و ... دسترسی پیدا کنی : 

context.getAssets()
لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام دوستان

تو ریسایکل ویو چجوری میشه مثه مولتی پنل بیسیک از تگ و sender استفاده کرد؟

مثلا من میخوام علاقه مندی بسازم میخوام وقتی رو دکمه علاقه مندی کلیک شد آی دی اون پیامک بره تو یه جایی ذخیره بشه؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام دوستان

تو ریسایکل ویو چجوری میشه مثه مولتی پنل بیسیک از تگ و sender استفاده کرد؟

مثلا من میخوام علاقه مندی بسازم میخوام وقتی رو دکمه علاقه مندی کلیک شد آی دی اون پیامک بره تو یه جایی ذخیره بشه؟

 

میتونید شیوه ساخت لیست علاقه مندی رو از اینجا ببینید و توی Recycler View پیاده کنید

 

http://stackoverflow.com/questions/7957319/how-to-add-to-favourites-and-view-the-favourites-list

لینک ارسال
به اشتراک گذاری در سایت های دیگر

تو کد زیر که مربوط به کلیکه

public class MyViewHolder extends RecyclerView.ViewHolder {
     CardView cardView;
        public MyViewHolder(View itemView) {
            super(itemView);
            cardView = (CardView) itemView.findViewById(R.id.cardView);
            cardView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //inja harkari ke mikhain bokonin
                }
            });
        } 

اونجا که نوشته هرکاری میخواید بکنید چجوری پوزیشن مربوط به اون آیتمی که اون دکمه علاقه مندی توشه بگیرم؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

تو کد زیر که مربوط به کلیکه

public class MyViewHolder extends RecyclerView.ViewHolder {
     CardView cardView;
        public MyViewHolder(View itemView) {
            super(itemView);
            cardView = (CardView) itemView.findViewById(R.id.cardView);
            cardView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //inja harkari ke mikhain bokonin
                }
            });
        } 

اونجا که نوشته هرکاری میخواید بکنید چجوری پوزیشن مربوط به اون آیتمی که اون دکمه علاقه مندی توشه بگیرم؟

 

سلام

 

میتونید رویداد کلیک رو در OnBindViewHolder هم تعریف کنید و از position هم استفاده کنید

   @Override
    public void onBindViewHolder(MyViewHolder holder, final int position) {
    holder.imageView.setImageResource(R.drawable.doozicon);
        holder.textView.setText(items[position]);
        holder.cardView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(context,"Click Shod Dar" + Integer.toString(position),Toast.LENGTH_SHORT).show();
            }
        });
    }
لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • 1 ماه بعد...

با سلام ، این آموزش شروع کار با RecyclerView هستش که خب خیلی هاتون میدونین این ویو دیگه تقریبا جایگزین ListView و GridView شده و خب قدرت و کارایی و سرعت و خلاصه از همه لحاظ کلی ارتقا پیدا کرده نسبت به لیست ویو و گرید ویو ، توی این آموزش هم ساخت adapter و نمایش لیوت ها و اطلاعات با RecyclerView و CardView رو یاد میگیرین و خب یه ذره انیمیشن هم برای اضافه و کم کردن آیتم ها و . . . هم توضیح دادم ، آموزش های بعدی برای Swip و .. آیتم ها رو هم تا چند روز دیگه ضبط میکنم

 

دانلود 47mb

 

 

 

recyclerview-cardview.png

 

 

 

:(

 

چطوری میتونم توی b4a از این استفاده کنم ؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

:(

 

چطوری میتونم توی b4a از این استفاده کنم ؟

به جرات میتونم بگم بهترین نمونه تا حالا برای b4a 

 

لیست ویو قدرتمند و بسیار سریع AriaListView

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • 2 هفته بعد...

با سلام

من از intellij استفاده می کنم و کد های اموزش داده شده اجرا نمی شن و خطا هایی از support.v4.view می گیره  اگر راهنمایی بفرمایید ممنون می شم

لینک ارسال
به اشتراک گذاری در سایت های دیگر

با سلام

من از intellij استفاده می کنم و کد های اموزش داده شده اجرا نمی شن و خطا هایی از support.v4.view می گیره  اگر راهنمایی بفرمایید ممنون می شم

سلام

از اینتلی جی اگه استفاده میکنید، برای کدهای جاواست

باید از اندروید استادیو استفاده کنید

البته اگه درست متوجه شده باشم مشکل رو

اموزش برای محیط اندروید استادیو هستش...

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

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

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.

×
×
  • اضافه کردن...