Пример #1
0
        void OnGroupClick2(object sender, int pos)
        {
            ExpertGroupData2 groupSelect = (ExpertGroupData2)listItems[pos];

            #region closing EntryData items
            if (groupSelect.items.Count == 0)
            {
                int count = 0;
                while (listItems.Count > pos + 1 && listItems[pos + 1].GetItemType() == 1)
                {
                    groupSelect.items.Add(listItems[pos + 1]);
                    listItems.RemoveAt(pos + 1);
                    recyclerAdapter.NotifyItemRemoved(pos + 1);
                    count++;
                }
            }
            #endregion closing EntryData items

            #region opening EntryData items
            else
            {
                int index = pos + 1;
                foreach (ExpertEntryData entryNode in groupSelect.items)
                {
                    listItems.Insert(index, entryNode);
                    recyclerAdapter.NotifyItemInserted(index);
                    index++;
                }
                groupSelect.items.Clear();
                int last_group_index = 0;
                int count            = 0;
                foreach (var item in ThreeLevelExpertProfileAdapter.listItems)
                {
                    if (item is ExpertGroupData2)
                    {
                        last_group_index = count;
                    }
                    count++;
                }
                if (pos == last_group_index)
                {
                    recyclerView.SmoothScrollToPosition(ThreeLevelExpertProfileAdapter.listItems.Capacity - 1);
                }
            }
            #endregion opening EntryData items
        }
Пример #2
0
        private void initData()
        {
            this.listItems = new List <IExpertProfileDataType>();
            listItems.Add(new ExpertGroupData(
                              deserialized_expert_profile.id,
                              deserialized_expert_profile.fullName,
                              deserialized_expert_profile.phone,
                              deserialized_expert_profile.aboutExpert,
                              deserialized_expert_profile.rating,
                              deserialized_expert_profile.distance,
                              deserialized_expert_profile.city.name,
                              deserialized_expert_profile.online,
                              deserialized_expert_profile.avatarUrl,
                              null));

            foreach (var data in deserialized_expert_profile.mainCategories)
            {
                var spec_obj = new ExpertGroupData(null, null, null, null, null, null, null, false, null, data.name);
                if (data.subcategories != null)
                {
                    foreach (var subcategory in data.subcategories)
                    {
                        var subcat_obj = new ExpertGroupData2(subcategory.name);
                        var entry_obj  = new ExpertEntryData(subcategory.description, subcategory.services, subcategory.photos);
                        subcat_obj.items.Add(entry_obj);
                        spec_obj.items.Add(subcat_obj);
                    }
                }
                listItems.Add(spec_obj);
            }
            Typeface tf = Typeface.CreateFromAsset(Assets, "Roboto-Regular.ttf");

            recyclerAdapter                = new ThreeLevelExpertProfileAdapter(this, this, tf, listItems);
            recyclerAdapter.GroupClick    += OnGroupClick;
            recyclerAdapter.GroupClick2   += OnGroupClick2;
            recyclerAdapter.BttEntryClick += OnBttEntryClick;
            this.mLayoutManager            = new LinearLayoutManager(this);
            recyclerView.SetLayoutManager(mLayoutManager);
            recyclerView.SetAdapter(recyclerAdapter);
        }
Пример #3
0
        void OnGroupClick(object sender, int pos)
        {
            ExpertGroupData groupSelect = (ExpertGroupData)listItems[pos];

            #region closing all subitems
            if (groupSelect.items.Count == 0)
            {
                bool is_cur_header_item11111 = true;
                //loop to close EntryData items
                for (int i = pos; i < listItems.Count; i++)
                {
                    try
                    {
                        var current_item = (ExpertGroupData)listItems[i];
                        if (!is_cur_header_item11111)
                        {
                            break;
                        }
                        is_cur_header_item11111 = false;
                    }
                    catch
                    {
                        try
                        {
                            ExpertGroupData2 groupSelect2 = (ExpertGroupData2)listItems[i];
                            #region closing EntryData items
                            if (groupSelect2.items.Count == 0)
                            {
                                int count = 0;
                                while (listItems.Count > i + 1 && listItems[i + 1].GetItemType() == 1)
                                {
                                    groupSelect2.items.Add(listItems[i + 1]);
                                    listItems.RemoveAt(i + 1);
                                    recyclerAdapter.NotifyItemRemoved(i + 1);
                                    count++;
                                }
                            }
                            #endregion closing EntryData items
                        }
                        catch
                        {
                        }
                    }
                }

                var  indexes_to_remove  = new List <int>();
                bool is_cur_header_item = true;
                //loop to close GreoupData2 items
                for (int i = pos; i < listItems.Count; i++)
                {
                    try
                    {
                        var current_item = (ExpertGroupData)listItems[i];
                        if (!is_cur_header_item)
                        {
                            break;
                        }
                        is_cur_header_item = false;
                    }
                    catch
                    {
                        try
                        {
                            var current_item = (ExpertGroupData2)listItems[i];
                            groupSelect.items.Add(listItems[pos + 1]);
                            listItems.RemoveAt(pos + 1);
                            recyclerAdapter.NotifyItemRemoved(pos + 1);
                            i--;
                        }
                        catch
                        {
                        }
                    }
                }
            }
            #endregion closing closing all subitems

            #region opening GroupData2 group items (they are subitems to main group (GroupData) items)
            else
            {
                int index = pos + 1;
                foreach (ExpertGroupData2 entryNode in groupSelect.items)
                {
                    listItems.Insert(index, entryNode);
                    recyclerAdapter.NotifyItemInserted(index);
                    index++;
                }
                groupSelect.items.Clear();

                int last_group_index = 0;
                int count            = 0;
                foreach (var item in ThreeLevelExpertProfileAdapter.listItems)
                {
                    if (item is ExpertGroupData)
                    {
                        last_group_index = count;
                    }
                    count++;
                }
                if (pos == last_group_index)
                {
                    recyclerView.SmoothScrollToPosition(ThreeLevelExpertProfileAdapter.listItems.Capacity - 1);
                }
            }
            #endregion opening GroupData2 group items (they are subitems to main group (GroupData) items)
        }
        public override void OnBindViewHolder(RecyclerView.ViewHolder holder, int position)
        {
            IExpertProfileDataType itemNode = listItems[position];

            if (itemNode.GetItemType() == 0)
            {
                ExpertGroupData             group       = itemNode as ExpertGroupData;
                GroupExpertThreeLevelHolder groupHolder = holder as GroupExpertThreeLevelHolder;


                if (position == 0)
                {
                    AboutExpertActivity.InfoText    = group.aboutExpertInfo;
                    groupHolder.headerRL.Visibility = ViewStates.Visible;
                    groupHolder.itemRL.Visibility   = ViewStates.Gone;

                    groupHolder.expertNameTV.SetTypeface(tf, TypefaceStyle.Bold);
                    groupHolder.expertSurnameTV.SetTypeface(tf, TypefaceStyle.Bold);
                    groupHolder.expert_phoneTV.SetTypeface(tf, TypefaceStyle.Normal);
                    groupHolder.aboutExpertTitle.SetTypeface(tf, TypefaceStyle.Bold);
                    groupHolder.aboutExpertInfo.SetTypeface(tf, TypefaceStyle.Normal);
                    groupHolder.writeTV.SetTypeface(tf, TypefaceStyle.Bold);
                    groupHolder.callTV.SetTypeface(tf, TypefaceStyle.Bold);
                    groupHolder.cityTV.SetTypeface(tf, TypefaceStyle.Normal);
                    groupHolder.nowTitle.SetTypeface(tf, TypefaceStyle.Bold);
                    groupHolder.distanceTV.SetTypeface(tf, TypefaceStyle.Normal);
                    groupHolder.rating_valueTV.SetTypeface(tf, TypefaceStyle.Bold);
                    groupHolder.expert_phoneTV.Text = group.expert_phone;

                    char[]   chars = { ' ' };
                    string[] split = group.expertName.Split(chars);
                    try
                    {
                        string name       = split[0];
                        string middlename = split[1];
                        groupHolder.expertNameTV.Text    = name + " " + middlename;
                        groupHolder.expertSurnameTV.Text = split[2];
                    }
                    catch
                    {
                        groupHolder.expertNameTV.Text       = group.expertName;
                        groupHolder.expertNameTV.Visibility = ViewStates.Visible;
                    }
                    Thread backgroundThread = new Thread(new ThreadStart(() =>
                    {
                        Glide.Get(Application.Context).ClearDiskCache();
                    }));
                    backgroundThread.IsBackground = true;
                    backgroundThread.Start();
                    Glide.Get(context).ClearMemory();
                    Glide.With(Application.Context)
                    .Load("https://api.iamnearby.net/" + group.profile_image)
                    .Apply(new Com.Bumptech.Glide.Request.RequestOptions()
                           .SkipMemoryCache(true))
                    //.Placeholder(Resource.Drawable.specialization_imageIV)
                    .Into(groupHolder.profile_image);

                    groupHolder.cityTV.Text = group.city;
                    if (group.online)
                    {
                        groupHolder.onlineIV.Visibility = ViewStates.Visible;
                    }
                    else
                    {
                        groupHolder.onlineIV.Visibility = ViewStates.Gone;
                    }
                    double distance_in_km;
                    bool   distance_in_km_parsed = Double.TryParse(group.distance, out distance_in_km);
                    if (distance_in_km > 999)
                    {
                        distance_in_km = distance_in_km / 1000;
                        var final_dist = Math.Round(distance_in_km, 2).ToString().Replace(',', '.');
                        groupHolder.distanceTV.Text = final_dist + " км";
                    }
                    else
                    {
                        groupHolder.distanceTV.Text = group.distance + " м";
                    }
                    if (!String.IsNullOrEmpty(group.aboutExpertInfo))
                    {
                        groupHolder.aboutExpertRL.Visibility = ViewStates.Visible;
                        groupHolder.aboutExpertInfo.Text     = group.aboutExpertInfo;
                    }
                    else
                    {
                        groupHolder.aboutExpertRL.Visibility = ViewStates.Gone;
                    }

                    groupHolder.rating_valueTV.Text = "(" + group.rating_value.ToString() + ")";
                    double rating_value = 0;
                    try
                    {
                        rating_value = Convert.ToDouble(group.rating_value, (CultureInfo.InvariantCulture));
                        if (rating_value >= 1)
                        {
                            groupHolder.star1IV.SetBackgroundResource(Resource.Drawable.active_star);
                            if (rating_value >= 2)
                            {
                                groupHolder.star2IV.SetBackgroundResource(Resource.Drawable.active_star);
                                if (rating_value >= 3)
                                {
                                    groupHolder.star3IV.SetBackgroundResource(Resource.Drawable.active_star);
                                    if (rating_value >= 4)
                                    {
                                        groupHolder.star4IV.SetBackgroundResource(Resource.Drawable.active_star);
                                        if (rating_value >= 5)
                                        {
                                            groupHolder.star5IV.SetBackgroundResource(Resource.Drawable.active_star);
                                        }
                                    }
                                }
                            }
                        }
                    }
                    catch { }
                }
                else
                {
                    groupHolder.headerRL.Visibility = ViewStates.Gone;
                    groupHolder.itemRL.Visibility   = ViewStates.Visible;
                    groupHolder.skillNameTV.Text    = group.upper_categ;
                    groupHolder.skillNameTV.SetTypeface(tf, TypefaceStyle.Bold);
                }
            }
            else if (itemNode.GetItemType() == 1)
            {
                ExpertEntryData entry = itemNode as ExpertEntryData;
                holderEntry = holder as EntryHolder;

                holderEntry.descriptionTitleTV.SetTypeface(tf, TypefaceStyle.Bold);
                holderEntry.description_text_dataTV.SetTypeface(tf, TypefaceStyle.Normal);
                holderEntry.services_and_pricesTV.SetTypeface(tf, TypefaceStyle.Bold);
                holderEntry.portfolioTitleTV.SetTypeface(tf, TypefaceStyle.Bold);
                if (!String.IsNullOrEmpty(entry.description))
                {
                    holderEntry.description_text_dataTV.Text = entry.description;
                }
                else
                {
                    holderEntry.description_text_dataTV.Text = _context.GetString(Resource.String.no_data);
                }

                holderEntry.layoutManager_services = new LinearLayoutManager(this.context, LinearLayoutManager.Vertical, false);
                holderEntry.recyclerViewServices.SetLayoutManager(holderEntry.layoutManager_services);
                var serv_temp_list = new List <ServiceData>();

                if (entry.services != null)
                {
                    holderEntry.recyclerViewServices.Visibility  = ViewStates.Visible;
                    holderEntry.services_and_pricesTV.Visibility = ViewStates.Visible;
                    foreach (var d in entry.services)
                    {
                        serv_temp_list.Add(new ServiceData()
                        {
                            name = d.name, price = d.price
                        });
                    }
                }
                else
                {
                    holderEntry.recyclerViewServices.Visibility  = ViewStates.Gone;
                    holderEntry.services_and_pricesTV.Visibility = ViewStates.Gone;
                }
                var services_and_pricesAdapter = new ServicesAndPricesForExpertAdapter(serv_temp_list, _context, tf);
                holderEntry.recyclerViewServices.SetAdapter(services_and_pricesAdapter);

                holderEntry.portfolio_layoutManager = new LinearLayoutManager(this.context, LinearLayoutManager.Horizontal, false);
                holderEntry.portfolio_recyclerView.SetLayoutManager(holderEntry.portfolio_layoutManager);
                try
                {
                    var image_list = new List <string>();
                    int count_     = 0;
                    if (entry.photos == null)
                    {
                        count_ = 0;
                    }
                    else
                    {
                        count_ = entry.photos.Count;
                        int i = 0;
                        foreach (var img in entry.photos)
                        {
                            var current_img = JsonConvert.DeserializeObject <CategoryImage>(entry.photos[i].ToString());
                            image_list.Add(current_img.imageUrl);
                            i++;
                            if (i == count_)
                            {
                                break;
                            }
                        }
                    }
                    var portfolioAdapter = new PortfolioExpertAdapter(image_list, _context);
                    holderEntry.portfolio_recyclerView.SetAdapter(portfolioAdapter);
                    if (count_ < 1)
                    {
                        holderEntry.portfolioTitleTV.Visibility       = ViewStates.Gone;
                        holderEntry.portfolio_recyclerView.Visibility = ViewStates.Gone;
                    }
                    else
                    {
                        holderEntry.portfolioTitleTV.Visibility       = ViewStates.Visible;
                        holderEntry.portfolio_recyclerView.Visibility = ViewStates.Visible;
                    }
                }
                catch
                {
                    holderEntry.portfolioTitleTV.Visibility       = ViewStates.Gone;
                    holderEntry.portfolio_recyclerView.Visibility = ViewStates.Gone;
                }
            }
            else if (itemNode.GetItemType() == 2)
            {
                ExpertGroupData2             group2       = itemNode as ExpertGroupData2;
                GroupExpertThreeLevelHolder2 groupHolder2 = holder as GroupExpertThreeLevelHolder2;
                groupHolder2.itemRL.Visibility = ViewStates.Visible;
                groupHolder2.skillNameTV.Text  = group2.subcategory;
                groupHolder2.skillNameTV.SetTypeface(tf, TypefaceStyle.Normal);
            }
        }