android expandablerecycle 动画,java – Android Expandable RecyclerView不同的卡片高度

我有一个RecyclerView,其中包含一张卡片,每张卡片都扩展成儿童卡片。

每张卡都有不同的文字。我想要的是,当用户点击一张小孩卡时,它会展开,以显示内部的文字。展开高度是根据卡中包含的文字数量而定。

我试图通过使用以下方法来测量目标高度:

view.Measure(ViewGroup.LayoutParams.WrapContent, ViewGroup.LayoutParams.WrapContent);

然后将卡扩展到测量高度(见here)。

但是,它给所有的卡提供了相同的测量高度。

这是我的代码,这是基于this(更具体地说是Xamarin version):

这是主适配器,它创建并绑定父母和子卡:

public class HalachaExpandableAdapter : ExpandableRecyclerAdapter, View.IOnClickListener

{

LayoutInflater _inflater;

bool expand;

int targetHeight;

bool wave = false;

public HalachaExpandableAdapter(Context context, List 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);

}

}

我认为这是代码需要完成的地方,但如果您需要其他类的其他代码,我将很乐意发布。您还可以查看上面的链接,以了解它的工作原理。

希望有人可以帮助我

谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值