本文实例为大家分享了Android实现朋友圈评论回复列表的具体代码,供大家参考,具体内容如下
Android实现朋友圈评论回复列表
Android实现朋友圈点赞列表
Android实现朋友圈多图显示功能
正文
还是老流程,先来看一下效果图:
然后是主要实现代码:
CommentsView
public class CommentsView extends LinearLayout { private Context mContext; private List<CommentsBean> mDatas; private onItemClickListener listener; public CommentsView(Context context) { this(context, null); } public CommentsView(Context context, @Nullable AttributeSet attrs) { this(context, attrs, 0); } public CommentsView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); setOrientation(VERTICAL); this.mContext = context; } public void setList(List<CommentsBean> list) { mDatas = list; } public void setOnItemClickListener(onItemClickListener listener) { this.listener = listener; } public void notifyDataSetChanged() { removeAllViews(); if (mDatas == null || mDatas.size() <= 0) { return; } LayoutParams layoutParams = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); layoutParams.setMargins(0, 10, 0, 10); for (int i = 0; i < mDatas.size(); i++) { View view = getView(i); if (view == null) { throw new NullPointerException("listview item layout is null, please check getView()..."); } addView(view, i, layoutParams); } } private View getView(final int position) { final CommentsBean item = mDatas.get(position); UserBean replyUser = item.getReplyUser(); boolean hasReply = false; // 是否有回复 if (replyUser != null) { hasReply = true; } TextView textView = new TextView(mContext); textView.setTextSize(15); textView.setTextColor(0xff686868); SpannableStringBuilder builder = new SpannableStringBuilder(); UserBean comUser = item.getCommentsUser(); String name = comUser.getUserName(); if (hasReply) { builder.append(setClickableSpan(name, item.getCommentsUser())); builder.append(" 回复 "); builder.append(setClickableSpan(replyUser.getUserName(), item.getReplyUser())); } else { builder.append(setClickableSpan(name, item.getCommentsUser())); } builder.append(" : "); builder.append(setClickableSpanContent(item.getContent(), position)); textView.setText(builder); // 设置点击背景色 textView.setHighlightColor(getResources().getColor(android.R.color.transparent));// textView.setHighlightColor(0xff000000); textView.setMovementMethod(new CircleMovementMethod(0xffcccccc, 0xffcccccc)); textView.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (listener != null) { listener.onItemClick(position, item); } } }); return textView; } public SpannableString setClickableSpanContent(final String item, final int position) { final SpannableString string = new SpannableString(item); ClickableSpan span = new ClickableSpan() { @Override public void onClick(View widget) { // TODO: 2017/9/3 评论内容点击事件 Toast.makeText(mContext, "position: " + position + " , content: " + item, Toast.LENGTH_SHORT).show(); } @Override public void updateDrawState(TextPaint ds) { super.updateDrawState(ds); // 设置显示的内容文本颜色 ds.setColor(0xff686868); ds.setUnderlineText(false); } }; string.setSpan(span, 0, string.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); return string; } public SpannableString setClickableSpan(final String item, final UserBean bean) { final SpannableString string = new SpannableString(item); ClickableSpan span = new ClickableSpan() { @Override public void onClick(View widget) { // TODO: 2017/9/3 评论用户名字点击事件 Toast.makeText(mContext, bean.getUserName(), Toast.LENGTH_SHORT).show(); } @Override public void updateDrawState(TextPaint ds) { super.updateDrawState(ds); // 设置显示的用户名文本颜色 ds.setColor(0xff387dcc); ds.setUnderlineText(false); } }; string.setSpan(span, 0, string.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); return string; } public interface onItemClickListener { void onItemClick(int position, CommentsBean bean); }}
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1148
183.71 KB下载数642
644.84 KB下载数2756
相关文章
发现更多好内容- 如何用 Java 解析 XML 并获取标签属性值?(java怎么解析xml获取标签属性值)
- Java 中实现 MapReduce 的具体方法有哪些?(java实现mapreduce的方法是什么)
- 如何让 Java 的 settimeout 与线程池协同工作?(Java settimeout怎样与线程池配合)
- Java 中对象数组的定义及使用方式有哪些?(Java对象数组定义与用法有哪些)
- Java ClassLoader 的使用方法究竟是什么?(java classloader的使用方法是什么)
- Java 中 Bimap 的适用场景具体有哪些?(Bimap在Java中的适用场景有哪些)
- Java 和 Golang 在性能方面有哪些差异?(Java与Golang的性能差异)
- Java 中带参方法和无参方法的差异究竟体现在哪些方面?(java有参和无参的区别是什么)
- 如何在 Java 中创建 Date 对象?(java怎么创建date对象)
- 如何利用 Java Milo 开展网络编程?(如何使用Java Milo进行网络编程)
猜你喜欢
AI推送时光机Android实现朋友圈评论回复列表
后端开发2023-05-30
vue实现文章评论和回复列表
后端开发2024-04-02
vue怎么实现文章评论和回复列表
后端开发2023-06-30
Java单表实现评论回复功能
后端开发2023-08-31
Java单表怎么实现评论回复功能
后端开发2023-07-05
Java单表实现评论回复功能(多种实现方式)
后端开发2023-03-06
咦!没有更多了?去看看其它编程学习网 内容吧