Android网易评论盖楼效果实现
来源:互联网 发布:90后芈月女孩走红网络 编辑:程序博客网 时间:2024/04/28 21:07
先来张效果图:
下面是一个主要的方法:
/** * 递归加载楼层的方法 * * @param context上下文的对像 * @param 递归的控制参数 * ,同时也是取用户评论信息和背景色的下标,引参数的大小必须是从集合中获得的用户名数组或从集合中获得的评论内容数据的大小减一 * @param pad * 楼层的间距 * @param strs * 用户名的字符串数组 * @param strs1 * 用户相应评论内容的字符串数组 * @param color * 背景色的数组,实际应用的时候这个参数可以不用,用一张背景图片代替就行 * @return 返回一个楼层的LinearLayout布局对象 */private LinearLayout add(Context context, int i, int pad, String[] strs,String[] strs1, int[] color) {// 加载一个布局LinearLayout layout1 = (LinearLayout) LayoutInflater.from(context).inflate(R.layout.add, null);// 获得显示用户名、楼层数、用户评论内容的TextViewTextView name = (TextView) layout1.findViewById(R.id.add_textView01);TextView page = (TextView) layout1.findViewById(R.id.add_textView02);TextView comment = (TextView) layout1.findViewById(R.id.add_textView03);// 设置显示用户名、楼层数、用户评论内容TextView的内容name.setText(strs[i]);page.setText((i + 1) + "");comment.setText(strs1[i]);// 动态生成一个LinearLayout来装载获得的布局LinearLayout layout = new LinearLayout(context);layout.setOrientation(LinearLayout.VERTICAL);layout.setBackgroundColor(color[i]);layout.setPadding(pad, pad, pad, pad);// 当i的值为零时,递归结束if (i != 0) {layout.addView(add(context, --i, pad, strs, strs1, color));}layout.addView(layout1);return layout;}
下面是add.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" > <RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android:id="@+id/add_textView01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_marginLeft="10dp" android:text="sd" /> <TextView android:id="@+id/add_textView02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_marginRight="10dp" android:text="1" /> </RelativeLayout> <TextView android:id="@+id/add_textView03" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="10dp" android:text="sfsd" /></LinearLayout>
下面附上Adapter的代码,Activity的布局和数据的添加自已想:
public class CommentAdapter extends BaseAdapter {private Context context;private List<Map<String, Object>> mAryList;private int[] color = new int[] { Color.CYAN, Color.RED, Color.BLUE,Color.BLACK, Color.DKGRAY, Color.GREEN, Color.LTGRAY,Color.MAGENTA, Color.WHITE, Color.YELLOW };private int pad = 2;public CommentAdapter(Context context, List<Map<String, Object>> strings) {this.context = context;this.mAryList = strings;}@Overridepublic int getCount() {return mAryList != null ? mAryList.size() : 0;}@Overridepublic Object getItem(int position) {return mAryList != null ? mAryList.get(position) : null;}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ViewHolder holder = null;if (convertView == null) {holder = new ViewHolder();convertView = LayoutInflater.from(context).inflate(R.layout.main_item, null);holder.layout = (LinearLayout) convertView.findViewById(R.id.main_linearLayout);holder.lastComment = (TextView) convertView.findViewById(R.id.main_textView);convertView.setTag(holder);} else {holder = (ViewHolder) convertView.getTag();// 此处清除子Viewholder.layout.removeAllViews();}holder.lastComment.setText(mAryList.get(position).get("lastComment").toString());String[] strs = (String[]) mAryList.get(position).get("name");String[] strs1 = (String[]) mAryList.get(position).get("comment");holder.layout.addView(add(context, (strs.length - 1), pad, strs, strs1,color));convertView.setBackgroundColor(Color.TRANSPARENT);return convertView;}/** * 递归加载楼层的方法 * * @param context上下文的对像 * @param 递归的控制参数 * ,同时也是取用户评论信息和背景色的下标,引参数的大小必须是从集合中获得的用户名数组或从集合中获得的评论内容数据的大小减一 * @param pad * 楼层的间距 * @param strs * 用户名的字符串数组 * @param strs1 * 用户相应评论内容的字符串数组 * @param color * 背景色的数组,实际应用的时候这个参数可以不用,用一张背景图片代替就行 * @return 返回一个楼层的LinearLayout布局对象 */private LinearLayout add(Context context, int i, int pad, String[] strs,String[] strs1, int[] color) {LinearLayout layout1 = (LinearLayout) LayoutInflater.from(context).inflate(R.layout.add, null);TextView name = (TextView) layout1.findViewById(R.id.add_textView01);TextView page = (TextView) layout1.findViewById(R.id.add_textView02);TextView comment = (TextView) layout1.findViewById(R.id.add_textView03);name.setText(strs[i]);page.setText((i + 1) + "");comment.setText(strs1[i]);LinearLayout layout = new LinearLayout(context);layout.setOrientation(LinearLayout.VERTICAL);layout.setBackgroundColor(color[i]);layout.setPadding(pad, pad, pad, pad);if (i != 0) {layout.addView(add(context, --i, pad, strs, strs1, color));}layout.addView(layout1);return layout;}private class ViewHolder {LinearLayout layout;TextView lastComment;}}
工程的压缩包可以到我的资源里面下载!
- Android网易评论盖楼效果实现
- Android网易评论盖楼效果实现
- Android 使用ListView实现网易评论盖楼效果
- Android网易新闻评论盖楼效果的实现
- Android网易新闻评论盖楼效果的实现
- 仿网易新闻评论“盖楼”效果实现
- 仿网易评论盖楼PHP+Mysql实现
- 网易的评论盖楼设计
- 网易评论盖楼的数据结构
- 模拟网易新闻盖楼评论C#+ASP.NET+SQL
- 自反+递归 实现评论的无限引用 盖楼效果的实现
- 类似论坛评论和回复(评论盖楼)-android
- 【凯子哥带你做高仿】“煎蛋”Android版的高仿及优化(二)——大图显示模式、评论“盖楼”效果实现详解
- 【凯子哥带你做高仿】“煎蛋”Android版的高仿及优化(二)——大图显示模式、评论“盖楼”效果实现详解
- 【凯子哥带你做高仿】“煎蛋”Android版的高仿及优化(二)——大图显示模式、评论“盖楼”效果实现详解
- 客户端评论盖楼(内涵段子评论盖楼)实现思路
- nodejs 盖楼评论
- Android ScrollView滚动实现大众点评、网易云音乐评论悬停效果
- 操作系统大型实验进展(4)-----C/C++如何获取系统时间
- ios过段时间cell自动取消选中
- javascript面向对象技术基础(一)
- unix c 学习笔记之内存管理
- MySQL - ON DUPLICATE KEY UPDATE
- Android网易评论盖楼效果实现
- Quartz 2D 裁剪
- WinInet
- 基于openswan klips的IPsec VPN实现分析(一)数据发送
- 把Kernel的log关掉的方法
- libsvm的FQA
- system函数返回值问题(system的实现)—signal(SIGCHLD,SIG_DFL);signal(SIGNCHLD,S
- 开源库交叉编译
- 家居调查:儿童家具为何不标明重金属含量