前言:既然前面两篇文章记录了两种点赞列表的实现方式,那么这篇文章记录一下评论列表的实现吧。其实,评论列表的实现与第二种点赞列表的实现方式是相似的,都是利用自定义VIEW实现。不同的是点赞是自定义TextView,而这次的评论是自定义的线性布局(当然,自定义TextView也可以实现的)。这次评论列表采用自定义View继承LinearLayout,并动态添加TextView实现。
正如上图所示,本篇文章记录一下这个简单demo的实现过程:
第一步,自定义View
创建Class-CommentView继承LinearLayout,并重写构造方法。与前面提到的点赞列表类似的,我们也是定义一个List和一个Context的属性,同样的定义一个bindData与notifyDataSetChanged方法。根据List的大小而动态添加TextView,TextView与前面的点赞是一样的都是利用ClickableSpan,StringBuilder等拼接字符串,代码如下:
public class CommentView extends LinearLayout{ private Context mContext; private List<Comment> mDatas; public CommentView(Context context) { this(context, null); } public CommentView(Context context, @Nullable AttributeSet attrs) { this(context, attrs, 0); } public CommentView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); setOrientation(VERTICAL); this.mContext = context; } /** * 设置评论列表信息 * * @param list */ public void bindData(List<Comment> list) { mDatas = list; } public void notifyDataSetChanged() { removeAllViews(); if (mDatas == nu