PlaceHolderView نمایشی برای تمام لیست ها

354
placeholderview | اُکسیما

PlaceHolderView نمایشی برای تمام لیست ها


پیاده سازی RecyclerView با محتوایی پویا و داینامیک به همراه اضافه کردن listener برای هر یک کاری بسیار آزار دهنده است. اگر ما مجبور به پیاده سازی انیمیشن نیز برای آن Recyclers باشیم، دیگر یک کابوس می شود.به همین دلیل ایده ی یک رابط کاربری بسیار ساده به ذهن رسید ، که با قدرت بیشتری، بدون اجرای آداپتور، نمایش ListView، GridView و RecyclerView را با سهولت و سادگی جایگزین می نماید .


چرا PlaceHolderView؟


  • PlaceHolderView تمام کد های مربوط به ادپتر را حذف می نماید . واقعیت شگفت انگیز این است که هیچ اداپتری برای نگرانی وجود ندارد.
  • کد بسیار مدولار است و با قرار دادن حاشیه نویسی برای هر View و متدی بسیار انعطاف پذیر می گردد.
  • No findViewById ، NO onClickListener
  • انیمیشن های بسیار جذاب در مورد آیتم ها را می توان تنها با یک خط از کد اعمال کرد.
  • مدیریت حافظه ، فوق العاده آسان با این کتابخانه است

برخی از برنامه ها :


  • Navigation Drawer
  • placeholderview1-oxima

  • Image Gallery
  • placeholderview2-oxima

راهنمای استفاده از PlaceHolderView:


گام اول :


افزودن depndency در فایل build.gradle برنامه

        
            dependencies {
                 implementation 'com.mindorks:placeholderview:0.2.7'
            }
        
    

گام دوم :


PlaceHolderView را در Res / layout / activity_main.xml اضافه کنید

        
            < com.mindorks.placeholderview.PlaceHolderView
                    android:id="@+id/galleryView"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"/>
        
    

گام سوم :


ایجاد یک item view در مسیر res / layout / gallery_item_big.xml

        
            < ?xml version="1.0" encoding="utf-8"?>
            < LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                          xmlns:tools="http://schemas.android.com/tools"
                          android:layout_width="match_parent"
                          android:layout_height="match_parent"
                          android:orientation="horizontal"
                          tools:context="com.mindorks.test.MainActivity">

                < com.mindorks.placeholderview.PlaceHolderView
                        android:id="@+id/placeHolderView"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"/>

            < /LinearLayout>
        
    

گام چهارم :


ایجاد ItemTypeBig.java

        

            @Animate(Animation.ENTER_LEFT_DESC)
            @NonReusable
            @Layout(R.layout.gallery_item_big)
            public class ImageTypeBig {

                @View(R.id.imageView)
                private ImageView imageView;

                private String mUlr;
                private Context mContext;
                private PlaceHolderView mPlaceHolderView;

                public ImageTypeBig(Context context, PlaceHolderView placeHolderView, String ulr) {
                    mContext = context;
                    mPlaceHolderView = placeHolderView;
                    mUlr = ulr;
                }

                @Resolve
                private void onResolved() {
                    Glide.with(mContext).load(mUlr).into(imageView);
                }

                @LongClick(R.id.imageView)
                private void onLongClick(){
                    mPlaceHolderView.removeView(this);
                }

            }
        
    

حاشیه نویسی ها:


  • @Layout: Bind the XML layout with the class
  • @View : Bind the variable with the view defined in the above layout
  • @Click : Bind the OnClickListener to a view
  • @LongClick : Bind the long click listerner to a view
  • @Resolve : Any operation being performed on the view reference defined by @View should be annotated with @Resolve

  • @Animate(Animation.ENTER_LEFT_DESC) : Sets the defined animations in the Animation class on this item view
  • @NonReusable : Releases the view reference along with all the attached references in the view object. This view object should not be used again in the addView()


گام پنجم (اختیاری) :


اگر PlaceHolderView با طرح grid یا طرح staggered یا هر طرح سفارشی مورد نیاز باشد می توانید از کلاس Builder ارائه شده استفاده کنید.

        

            // If customisation is Required then use Builder with the PlaceHolderView
            placeHolderView.getBuilder()
                .setHasFixedSize(false)
                .setItemViewCacheSize(10)
                .setLayoutManager(new GridLayoutManager(this, 3));

        
    

گام پنجم :


در MainActivity.java یک شی از PlaceHolderView به دست آورید و ایتم ها را در آن اضافه کنید.

        

            PlaceHolderView mGalleryView = (PlaceHolderView)findViewById(R.id.galleryView);
            mGalleryView
                   .addView(new ImageTypeBig(this.getApplicationContext(), mGalleryView, url1));
                   .addView(new ImageTypeBig(this.getApplicationContext(), mGalleryView, url2));
                   .addView(new ImageTypeBig(this.getApplicationContext(), mGalleryView, url3));
                   .addView(new ImageTypeBig(this.getApplicationContext(), mGalleryView, url4));

        
    

شما به راحتی می توانید از PlaceHolderView به عنوان جایگزینی مناسب برای RecyclerView استفاده کنید و از آن لذت ببرید . در قسمت دیدگاه ها، نظر خود را در خصوص این نوع از نمایش لیست ها در اندروید با ما در میان بگذارید .

پیوست ها :
  • این مقاله دارای پیوست نمی باشد.
loder | اُکسیما
»» نویسنده مقاله
حسین رئیسی | اُکسیما

حسین رئیسی
»» پشتیبانی مقاله

تیم پشتیبانی اُکسیما به صورت 24 ساعت در هر زمان و مکان، پاسخگوی تمامی سوالات و ابهامات شما در مورد این مقاله خواهند بود. بدین منظور شما می توانید از طریق روش های زیر از پشتیبانی فنی این مقاله برخوردار گردید. تیم پشتیبانی این اطمینان خاطر را به شما دانشجویان گرامی خواهند داد که در سریع ترین زمان ممکن پاسخگوی شما عزیزان باشند.


به اشتراک بگذارید ...

دوستان و همراهان گرامی : آیا تمایل دارید این مقاله را با دوستان و آشنایان خود در تلگرام به اشتراک بگذارید؟

مقاله های پیشنهادی

بسیاری از رهبران نخستین بار، تیمشان را به سمت هرج و مرج تبدیل می کنند و اثربخشی آنها توسط اصطکاک های غیر ضروری کاهش می یابد.به دلیل عدم تجربه، تغییرات گسترده ای برای بهبود کارآیی سازمان هایشان و به انجام رساندن دیدگاه خود اعمال می کنند.در این مقاله نکاتی درباره چگونگی اجتناب از اختلال عملکرد در تیم شما مطرح خواهیم کرد.

حسین رئیسی

441

تا کنون فکر کرده اید که چگونه سیستم های در مقیاس بزرگ سازمانی طراحی شده اند؟ قبل از شروع برنامه نویسی عمده، ما باید یک معماری مناسب را انتخاب کنیم که به ما قابلیت های دلخواه و ویژگی هایی باکیفیت را ارائه می دهد. از این رو، قبل ازشروع به طراحی و برنامه نویسی ما باید معماری های مختلف را درک کنیم. در این مقاله شما را با ده مورد از معمارهای نرم افزار به صورت خلاصه آشنا خواهیم کرد.

حسین رئیسی

640

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

حسین رئیسی

400