Anyone? On Friday, July 22, 2016 at 4:19:48 PM UTC+3, Amitai Rosenberg wrote: > > I have a RecyclerView that contains a list of cards, which expand into > child cards. > Each card has different text. I want that when the user clicks on a child > card, it expands to show the text inside. > I tried to measure the target height by using: > > view.Measure(ViewGroup.LayoutParams.WrapContent, > ViewGroup.LayoutParams.WrapContent); > > > And then expanding the card to the Measured Height (see here > <http://stackoverflow.com/questions/4946295/android-expand-collapse-animation>). > > However, it gives the same Measured Height to all of the cards. > > Here is my code, which is based on this > <https://github.com/bignerdranch/expandable-recycler-view> (more > specifically the Xamarin version > <https://github.com/frankcalise/XamDroid.ExpandableRecyclerView>): > > This is the main Adapter, which creates and binds the parent and the child > cards: > > public class HalachaExpandableAdapter : > ExpandableRecyclerAdapter<HalachaParentViewHolder, HalachaChildViewHolder>, > View.IOnClickListener{ > LayoutInflater _inflater; > bool expand; > int targetHeight; > bool wave = false; > > public HalachaExpandableAdapter(Context context, List<IParentObject> > itemList) : base(context, itemList) > { > _inflater = LayoutInflater.From(context); > } > > public override void OnBindChildViewHolder(HalachaChildViewHolder > childViewHolder, int position, object childObject) > { > var halachaChild = (HalachaChild)childObject; > childViewHolder.halachaChildTitle.Text = > halachaChild.Title.ToString(); > > targetHeight = childViewHolder.halachaChildCard.Height; > childViewHolder.halachaChildCard.LayoutParameters.Height = 100; > childViewHolder.halachaChildCard.SetOnClickListener(this); > expand = childViewHolder.expand; > > } > > public override void OnBindParentViewHolder(HalachaParentViewHolder > parentViewHolder, int position, object parentObject) > { > var halacha = (HalachaItem)parentObject; > parentViewHolder._halachaTitleTextView.Text = halacha.Title(); > parentViewHolder._halachaContentTextView.Text = halacha.Content; > if (halacha.ChildObjectList.Count == 1) > wave = true; > } > > public void OnClick(View v) > { > if (v.Height == 100) > { > AnimationCollapse anim = new AnimationCollapse(v, targetHeight, > 100); > anim.Duration = 300; > v.StartAnimation(anim); > > expand = false; > } > else > { > AnimationCollapse anim = new AnimationCollapse(v, 100, v.Height); > anim.Duration = 300; > v.StartAnimation(anim); > > expand = true; > } > } > > public override HalachaChildViewHolder OnCreateChildViewHolder(ViewGroup > childViewGroup) > { > var view = _inflater.Inflate(Resource.Layout.halachotListItem, > childViewGroup, false); > return new HalachaChildViewHolder(view); > } > > public override HalachaParentViewHolder > OnCreateParentViewHolder(ViewGroup parentViewGroup) > { > var view = _inflater.Inflate(Resource.Layout.halachotListHeader, > parentViewGroup, false); > wave = false; > return new HalachaParentViewHolder(view); > }} > > > I think this is where the code is needed to be done, but if you need some > of the other code of the other classes, I will gladly post them. You can > also look at the links above for reference to how this works. > > Hope someone can help me. > Thanks! >
-- You received this message because you are subscribed to the Google Groups "Android Developers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/android-developers. To view this discussion on the web visit https://groups.google.com/d/msgid/android-developers/fc68d987-fa7a-41c8-bada-4e06ff2ea216%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.

