安卓实现仿点赞好友昵称列表,中间⽤逗号隔开
要实现⼀个仿那样的点赞列表,显⽰好友的昵称,中间⽤逗号隔开,并且点击好友昵称跳转到好友的详情页或者实现其他的操作。效果图如下:
第⼀步:我们需要先定义⼀个view,去实现列表的显⽰和点击事件:
public class LikesView extends TextView {
private Context mContext;
private List<LikeBean> list;
private int size;
public LikesView(Context Context) {
this(Context, null);
}
public LikesView(Context Context, @Nullable AttributeSet attrs) {
this(Context, attrs, 0);
}
public LikesView(Context Context, @Nullable AttributeSet attrs, int defstyleattr) {
super(Context, attrs, defstyleattr);
mContext = Context;
}
/**
* 设置点赞数据
*
* @param list
*/
public void setList(List<LikeBean> list,int size) {
this.list = list;
this.size = size;
}
/**
* 刷新点赞列表
*/
public void notifyDataSetChanged() {
if (list == null || list.size() <= 0) {
return;
}
SpannableStringBuilder builder = new SpannableStringBuilder();
builder.append(setImageSpan()).append(" ");
for (int i = 0; i < list.size(); i++) {
// 我写的最多显⽰9个昵称,超过的就不显⽰了
if (i > 9) {
break;
}
LikeBean item = (i);
builder.append(Name(), item));
// 昵称之间⽤逗号隔开,也可以定义其他符号,看⼼情咯
if (i != list.size() - 1) {
builder.append(" , ");
} else {
builder.append(" ");
}
}
// 如果长度超过10个,就省略显⽰
if (size > 10) {
builder.append("等" + size + "个⼈点赞了");
}
setText(builder);
setMovementMethod(new LinkMovementMethod());
}
/**
* 设置⽤户名字点击事件
*
* @param item
* @param bean
* @return
*/
public SpannableString setClickableSpan(final String item, final LikeBean bean) {
final SpannableString string = new SpannableString(item);
ClickableSpan span = new ClickableSpan() {
@Override
public void onClick(View widget) {
// TODO 这⾥写你的逻辑,处理昵称的点击事件
}
昵称代码转换@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
// 设置昵称的颜⾊
ds.setColor(Color.parseColor("#3865A8"));
ds.setUnderlineText(false);
}
};
string.setSpan(span, 0, string.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); return string;
}
/**
* 设置点赞图标
*
* @return
*/
private SpannableString setImageSpan() {
String text = " ";
SpannableString imgSpanText = new SpannableString(text);
// 这⾥是在点赞列表的最前⾯加上⼼形的图标,可以改成⾃⼰需要的
imgSpanText.setSpan(new ImageSpan(getContext(), R.mipmap.blue_like,
DynamicDrawableSpan.ALIGN_BASELINE),
0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
return imgSpanText;
}
第⼆步:控件定义好了,就可以开始使⽤了,先在布局⾥⾯写⼀下:
<LikesView
android:id="@+id/like_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:nestedScrollingEnabled="false"
<!--设置字体直接的间隔--!>
android:lineSpacingExtra="3dp" />
第三步:在activity中设置数据源并刷新列表:
LikesView mLikesView = findViewById(R.id.like_view);
// 数据源类型可以⾃⼰根据实际要求去改变,我这⾥⾥⾯放了user_id,name,head_img_url List<LikeBean> mLikeList = new ArrayList();
mLikeList.add(new LikeBean("1","张三",""));
mLikeList.add(new LikeBean("2","李四",""));
mLikeList.add(new LikeBean("3","王五",""));
// 我项⽬⾥并没有把所有的点赞好友返回过来,所以把size单独分开写了
mLikesView.setList(mLikeList , mLikeList.size());
第四步:这样⼦,就全部实现了,⼀个简单的好友点赞列表的实现。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论