效果图:

以上效果类似于显示点赞用户的界面,我们可以通过点击不同的昵称进入每个人的个人主页。

关于公共控件,请点击文章下方的git地址。

第一步:

我们为每个点赞的人建一个类用来代表个人的信息:

Person:

public class Person {public String name;public int age;
}

很简单,就一个名字和年龄

第二步:

自定义TextView控件

创建PersonListView并继承BaseOnTextView这个抽象类:

public class PersonListView extends BaseOnTextView<Person> {public PersonListView(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);}public PersonListView(Context context, AttributeSet attrs) {super(context, attrs);}public PersonListView(Context context) {super(context);}public void setVoteName(ArrayList<Person> list, int index) {this.getInfo(list);setVoteList(list, index);}/*** 设置点赞姓名*/@Overridepublic String getVoteName(Person data) {return data.name;}/*** 获取点赞人的信息*/@Overridepublic List<Person> getInfo(List<Person> list) {return list;}}

第三步:

将自定义的TextView放入xml中。

person_item.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><com.example.ontextview.PersonListViewandroid:id="@+id/tv_vote_names"android:layout_width="fill_parent"android:layout_height="wrap_content"android:background="@android:color/white"android:textScaleX="2"android:textSize="14sp" ></com.example.ontextview.PersonListView></LinearLayout>

第四步:

创建我们的Activity。

MainActivity:

public class MainActivity extends Activity {private ListView lv_lsit;private ArrayList<Person> personList=new ArrayList<Person>();private PersonListAdapter mPersonListAdapter=new PersonListAdapter();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView();}private void initView(){String[] strs = {"火影忍者", "卡卡西", "漩涡鸣人", "宇智波鼬" ,"宇智波佐助","小樱","李洛克","大蛇丸","取个名字好难啊","请不要再来伤害我"};for(int i=0;i<strs.length;i++){Person obj=new Person();obj.name=strs[i];personList.add(obj);}lv_lsit=(ListView)findViewById(R.id.lv_lsit);lv_lsit.setAdapter(mPersonListAdapter);mPersonListAdapter.notifyDataSetChanged();}class PersonListAdapter extends BaseAdapter{@Overridepublic int getCount() {return 1;}@Overridepublic Object getItem(int position) {return position;}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ViewHolder viewHolder;if(convertView==null){viewHolder=new ViewHolder();convertView=LayoutInflater.from(MainActivity.this).inflate(R.layout.person_item, null);viewHolder.tv_vote_names=(PersonListView)convertView.findViewById(R.id.tv_vote_names);convertView.setTag(viewHolder);}else{viewHolder=(ViewHolder) convertView.getTag();}viewHolder.tv_vote_names.setVoteList(personList, 0);return convertView;}}static class ViewHolder{PersonListView tv_vote_names;}}

最后在TextViewSpan类中的onClick方法中添加事件。

public class TextViewSpan<T> extends ClickableSpan {private String clickString;private Context mContext;private int selectClick;private T votePerson;public TextViewSpan(String clickString, Context context, int selectClick) {this.clickString = clickString;this.mContext = context;this.selectClick = selectClick;}/*** 设置点赞人的信息* * @param t*/public void setInfo(T t) {votePerson = t;}@Overridepublic void updateDrawState(TextPaint ds) {ds.setColor(mContext.getResources().getColor(R.color.main_link));ds.setUnderlineText(false); }@Overridepublic void onClick(View widget) {switch (selectClick) {case 0:// 打开个人主界面Person person = (Person) votePerson;Toast.makeText(mContext, person.name, Toast.LENGTH_SHORT).show();break;case 1:break;default:break;}}}

个人GitHub项目地址:https://github.com/LinhaiGu/OnTextView

转载请注明出处:http://blog.csdn.net/hai_qing_xu_kong/article/details/46225697情绪控_

Android之自定义控件显示点赞用户并通过用户名称进入该用户主页的功能相关推荐

  1. 在打开文章时,判断用户是否点赞或者收藏,切换显示点赞收藏图标;

    在做到某项目的文章显示时,考虑到用户的操作体验,添加了用户的点赞,评论,收藏行为; 首先去阿里图标矢量库;找几个关于点赞收藏评论的图标; 下载下来; 找到的这几张图标还不错; 大概写个样式,试试效果 ...

  2. android 符号表情显示乱码,android输入框限制输入法中的表情符号

    不知道大家有没有遇到过这种情况,输入搜狗输入法当中的表情时,输入框可以正常显示,但是在其他地方显示出来可能就是乱码. 所以为了防止用户胡乱输入表情.同时限制用户只能输入应用自带的表情.编写了一个自定义 ...

  3. Android 多屏显示分析

    双屏异显 系统提供了Presentation类,可以实现在两块屏幕上同时显示不同的内容:Presentation是一个特殊的dialog,它的目的是显示内容到第二屏幕. <!-- 显示系统窗口权 ...

  4. android listview分页显示,Android应用中使用ListView来分页显示刷新的内容

    点击按钮刷新1.效果如下: 实例如下:  上图的添加数据按钮可以换成一个进度条  因为没有数据所以我加了一个按钮添加到数据库用于测试:一般在服务器拉去数据需要一定的时间,所以可以弄个进度条来提示用户: ...

  5. android mapbox 添加多个点,使用Android Mapbox SDK显示多个标记的自定义infoWindow

    我想要在地图上可视化多个标记.它的完美展示和onMarkerTap从数据库检索的显示信息为JSON.我想要做的是在自定义布局或底部工作表中显示信息.当用户点击标记时,底部表单将出现,并显示与该标记相关 ...

  6. Android动态控制状态栏显示和隐藏

    记得之前有朋友在留言里让我写一篇关于沉浸式状态栏的文章,正巧我确实有这个打算,那么本篇就给大家带来一次沉浸式状态栏的微技巧讲解. 其实说到沉浸式状态栏这个名字我也是感到很无奈,真不知道这种叫法是谁先发 ...

  7. android surfaceflinger研究----显示系统

    这周抽空研究了一下SurfaceFlinger,发现真正复杂的并不是SurfaceFlinger本身,而是Android的display显示系统,网上关于这部分的介绍有不少,本不打算写的,但是发现还是 ...

  8. android 环形时间显示_使用Arduino构建OLED显示屏与Android手机接口的智能手表

    背景知识视频教程 Arduino 训练营:通过项目学习​viadean.com 通过制作Arduino UNO FM收音机接收器学习Arduino I2C​viadean.com 通过构建实际应用程序 ...

  9. android点赞取消赞功能吗,Android 仿微博的点赞功能的实现原理(持续点赞再取消)...

    搜索热词 产品需求,实现类似微博的持续点赞再取消功能,因为自己也偶尔刷微博,对这功能有一定的使用上的了解, 至于微博点赞的具体实现我并不知道,微博点赞在断网的情况下依然能点赞,不会提示网络异常,等有网 ...

最新文章

  1. SAP WM中阶之存储类型上架策略I(Adding to existing stock)
  2. W/System.err: at android.view.ViewConfiguration.get(ViewConfiguration.java:369)
  3. mysql数据库的安装
  4. SAP Cloud Application Programming 介绍(2021 更新版)
  5. 读书笔记:《亮剑 .Net》——将类转化为XML并保存已经去读后反序列化为类对象...
  6. Ansible自动化运维笔记3(playbook)
  7. RMAN数据库恢复 之归档模式有(无)备份-丢失数据文件的恢复
  8. 阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第1节 常用函数接口_4_使用Lambda优化日志案例...
  9. Android studio3.5调用Numcpp库方法
  10. 解决 webpack-dev-server 不能自动刷新的问题
  11. 张俊芳电机学11章计算题答案
  12. 2021第十二届蓝桥杯python组真题答案
  13. matlab模拟光伏发电,一种基于MATLAB的小型独立光伏发电仿真模型的制作方法
  14. 用友软件计算机时间格式,如何正确设置系统日期格式?_速达软件_用友,速达,管家婆,微软,金蝶,方正,博世通,数据博士,进销存,财务软件-飞鸿软件帮助中心 -...
  15. Java的foreach中,变量加final的作用(for(final XXX xxx : xxxs))
  16. 项目管理需要建立团队文化
  17. BUUCTF 藏藏藏
  18. java ant解压缩_java ant包中的org.apache.tools.zip实现压缩和解压缩实例详解
  19. 【02】Hadoop入门
  20. 基于Java实现的图片搜索系统

热门文章

  1. shell脚本按行读取文件的几种方式
  2. redis 的一主二从三哨兵模式
  3. 机器学习——利用K-均值聚类算法对未标注数据分组
  4. Erlang--热更新
  5. [唐诗]入朝洛堤步月-上官仪
  6. SAP 应用服务负载均衡的实现
  7. 手动安装oracle软件 删软件
  8. Exchange 2013部署系列之(十)信息权限保护RMS和Exchange 2013的整合
  9. 基于Android平台的多分辨率解决方案[图]
  10. HDOJ 1070 排序 水