آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

Custom Adapter (آموزش)

Hajhosseini  11 سال پیش  11 سال پیش
+15 0

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

سورس کد آداپتر:

/**
 * Created by a.hajhosseini on 1/10/2015.
 */
public class ContentAdapterRecyclerTest<T> extends RecyclerView.Adapter<ContentAdapterRecyclerTest.ViewHolder> {
        public ArrayList<T> array;

        public static class ViewHolder extends RecyclerView.ViewHolder {

            // inja View ha ro set mikonid
            TextView txt;
            TextView desc;

            public ViewHolder(View view) {
                super(view);

                // dar View Holder View ha ro cast mikonid
                txt = (TextView) view.findViewById(R.id.itemBookTxtTitle);
                desc = (TextView) view.findViewById(R.id.itemBookTxtDescription);
            }
        }

        public ContentAdapterRecyclerTest(ArrayList<T> items) {
            // gereftane ArrayList
            this.array = items;
        }

        @Override
        public ContentAdapterRecyclerTest.ViewHolder onCreateViewHolder(ViewGroup parent,int viewType) {
            ViewHolder vh = null;
            // CheckKardane viewType ( agar 0 bashe item_main_header ro estefade mikone, agar 1 bashe item_content ro  )
            switch (viewType) {
                case 0:{
                    View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_main_header, parent, false);
                    vh = new ViewHolder(v);
                    break;
                }
                case 1:{
                    View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_content, parent, false);
                    vh = new ViewHolder(v);
                    break;
                }
            }
            return vh;
        }

        @Override
        public void onBindViewHolder(ViewHolder holder, int position) {
            int type = getItemViewType(position);
            // dar ViewHolder mitoonim be TextView va ... meghdar bedim
            switch(type){
                case 1:{
                    StructContent item = (StructContent) array.get(position);
                    if(item.content_title != null) {
                        holder.txt.setText(item.content_title);
                        SmartFont.setContentTextProperty(holder.txt,0,1.5f,1.5f,SmartFont.getSelectedFontSize());
                        holder.txt.setVisibility(View.VISIBLE);
                    }
                    if(item.content_description != null){
                        holder.desc.setText(item.content_description);
                        SmartFont.setContentTextProperty(holder.desc,0,1.5f,1.5f,SmartFont.getSelectedFontSize());
                        holder.desc.setVisibility(View.VISIBLE);
                    }
                    break;
                }
            }
        }

        @Override
        public int getItemViewType(int position) {
            // dar in ghesmat tedade type hamun ro moshakhas mikonim, man 0 va 1 ro tarif kardam
            if (isPositionHeader(position))
//                it should be 0 if you have header
                return 0;
            return 1;
        }

        @Override
        public int getItemCount() {
            // tedade item haye ArrayList
            return array.size();
        }

        private boolean isPositionHeader(int position) {
            // in method ro man dasti neveshtam, baraye tashkhise type, agar type haye bishtari darid bayad switch bezarid
            if (position < 1)
                return true;
            else
                return false;
        }
}

طریقه استفاده از آداپتر( این کد رو در اکتیویتی بنویسید )

  // items hamun ArrayList mast ke az database gerefte shode
        final ContentAdapterRecyclerTest<StructContent> adapter = new ContentAdapterRecyclerTest<>(items);
final RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.fragmentMainRecyclerView); recyclerView.setHasFixedSize(true); recyclerView.setLayoutManager(new LinearLayoutManager(G.currentActivity, LinearLayoutManager.VERTICAL, false)); recyclerView.setItemAnimator(new DefaultItemAnimator()); recyclerView.setAdapter(adapter);

در اولین فرصت آموزش + توضیحات رو اضافه میکنم.

 برای این سوال پاسخی وجود ندارد.

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .