每日一贴,明天的内容关键字为android列表

引子

明天闲来做了一个类似iphone的圆角列表,先看效果。

图片中绿色线条的是列表头文字,红色的是列表题名文字。此两处都可以显示/隐藏及动态改变值。对于列表头还可以设置文字的位置(靠左,靠右,居中)。点击图片中的地域一行,转到下面省分选择:

关于列表行

列表中的一行默许的定义为:

左边的标题(title)

右侧的内容(value)

还有靠右的箭头

其中标题是一定会显示的,而“内容”如果为null,则不会显示,箭头是一个显示与否的boolean。则 CornerCell定义如下:

public class CornerCell {private String title;private String value;private boolean isArrow;private View view;public CornerCell(String title){this(title, null, false);}public CornerCell(String title, boolean isArrow){this(title, null, isArrow);}public CornerCell(String title, String value, boolean isArrow){this.title = title;this.value = value;this.isArrow = isArrow;}//getter and setter@Overridepublic String toString() {return String.format("[CornerCell: title=%1$s, value=%2$s, isArrow=%3$s]", title, value, isArrow);}
}

圆角列表容器

CornerRowLayout 继承于 LinearLayout,并实现了OnClickListener接口。

其构造方法如下:

public CornerRowLayout(Context context, AttributeSet attrs) {super(context, attrs);this.isShowValue = true;contentLy = new LinearLayout(context, attrs);contentLy.setBackgroundResource(R.drawable.shape_corner_list_background);contentLy.setOrientation(LinearLayout.VERTICAL);LayoutParams lp = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);headerTX = new TextView(getContext());headerTX.setLayoutParams(lp);footerTX = new TextView(getContext());footerTX.setLayoutParams(lp);footerTX.setGravity(Gravity.RIGHT);footerTX.setTextSize(13);//设置为垂直布局this.setOrientation(LinearLayout.VERTICAL);this.addView(headerTX);this.addView(contentLy);this.addView(footerTX);
}

设置列表内容

每日一道理
微笑,是春天里的一丝新绿,是秋日里的一缕阳光,是骄阳下的一片浓荫,是冬雪中的一株梅红……微笑着去面对吧,你会感到人生是那样的温馨与甜蜜!
/*** 设置这个表格的数据,会直接重新渲染全部表格*   @param cells*/
public void setCellList(List<CornerCell> cells){contentLy.removeAllViews();for(int i=0;i<cells.size();i++){CornerCell cell = cells.get(i);//如果 CornerCell 已经有自定义的视图,就用自定义的视图View cellView = cell.getView() == null ?View.inflate(getContext(), R.layout.nerve_corner_cell, null):cell.getView();if(cellView == null)continue;System.out.println(cell);/** 对头,中,尾进行分组*/if(i == 0)cellView.setBackgroundResource(R.drawable.shape_corner_list_top);else{//设置顶部的margin为1,就会涌现一条细线LayoutParams lp = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);lp.setMargins(0, 1, 0, 0);cellView.setLayoutParams(lp);if(i == cells.size() - 1)cellView.setBackgroundResource(R.drawable.shape_corner_list_bottom);elsecellView.setBackgroundResource(R.drawable.shape_corner_list_middle);}//设置可以点击,不然按住时不会有效果//cellView.setClickable(true);//cellView.setPadding(5, 8, 5, 8);((TextView)cellView.findViewById(R.id.cell_title)).setText(cell.getTitle());if(isShowValue)((TextView)cellView.findViewById(R.id.cell_value)).setText(cell.getValue());cellView.findViewById(R.id.cell_arrow).setVisibility(cell.isArrow() ? View.VISIBLE : View.GONE);cellView.setOnClickListener(this);cellView.setTag(i);//将这个view添加到本地容器contentLy.addView(cellView);}resetAll();
}

如何使用

1.先将相关的java类导入项目,还有相关的layout,drawable,style文件

2.在想参加圆角列表的页面参加以下内容:

<org.nerve.ui.corner.CornerRowLayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/myCornerLayout"android:layout_width="fill_parent"android:layout_height="fill_parent" android:padding="5dp"android:background="#DCDDDB">
</org.nerve.ui.corner.CornerRowLayout>

这个根据实际情况而定,如果列表内容太多,需要嵌套在一个SrollView内。

3.在Activity中:

cornerL = (CornerRowLayout)findViewById(R.id.myCornerLayout);List<CornerCell> cells = new ArrayList<CornerCell>();
cells.add(new CornerCell("姓名", "集成显卡", true));
cells.add(new CornerCell("春秋", "18岁", true));
cells.add(new CornerCell("地域", "广西壮族自治区", true));cornerL.setCellList(cells);
cornerL.setOnRowClickListener(this);cornerL.setHeader("以下信息我们会绝对保密");
cornerL.setFooter("2013-5-24");

效果就出来了。

4.Activity实现OnRowClickListenrr接口:

@Override
public void onRowClick(View v, int index) {if(index == 2){Intent intent = new Intent(ConrnerActivity.this, SelectProvinceActitivy.class);startActivityForResult(intent, PROVINCE);}
}

源代码下载:

http://download.csdn.net/detail/ssrc0604hx/5442505

感激阅读

文章结束给大家分享下程序员的一些笑话语录: 问答
Q:你是怎么区分一个内向的程序员和一个外向的程序员的? A:外向的程序员会看着你的鞋和你说话时。
Q:为什么程序员不能区分万圣节和圣诞节? A:这是因为 Oct 31 == Dec 25!(八进制的 31==十进制的 25)

--------------------------------- 原创文章 By
android和列表
---------------------------------

android列表【android开发记录片】android下实现圆角列表布局控件相关推荐

  1. 视频教程-基于NDK、C++、FFmpeg的android视频播放器开发实战-Android

    基于NDK.C++.FFmpeg的android视频播放器开发实战 夏曹俊:南京捷帝科技有限公司创始人,南京大学计算机硕士毕业,有15年c++跨平台项目研发的经验,领导开发过大量的c++虚拟仿真,计算 ...

  2. Android 音视频开发(六) -- Android Mediaprojection 截屏和录屏

    Android 音视频开发(一) – 使用AudioRecord 录制PCM(录音):AudioTrack播放音频 Android 音视频开发(二) – Camera1 实现预览.拍照功能 Andro ...

  3. Android布局控件之LinearLayout详解

    LinearLayout是线性布局控件,它包含的子控件将以横向或竖向的方式排列,按照相对位置来排列所有的widgets或者其他的containers,超过边界时,某些控件将缺失或消失.因此一个垂直列表 ...

  4. android excel布局,Androidui布局控件(2)表格布局excelPanel

    推荐理由 RecycleView定制组件 支持向左,向右加载过去,未来数据 列行表头锁定 作为表格布局,可以作为您的ui公共组件库里面的一员,你可以二次开发,让它变得更加可定制化,可扩展,更强大 In ...

  5. Android软键盘的全面解析,让你不再怕控件被遮盖

    本文转载自:https://blog.csdn.net/l540675759/article/details/74528641 背景 1.Android软键盘这块从我入职到现在,是一个一直纠缠我的问题 ...

  6. android侧滑布局,Android布局控件DrawerLayout实现完美侧滑效果

    drawerLayout其实是一个布局控件,跟LinearLayout等控件是一样的,但是drawerLayout带有滑动的功能.只要按照drawerLayout的规定布局方式写完布局,就能有侧滑的效 ...

  7. 【Android】7.1 布局控件常用的公共属性

    分类:C#.Android.VS2015: 创建日期:2016-02-10 一.简介 Android应用程序中的布局控件都是容器控件,用于控制子元素的排列和放置方式.Android提供的布局控件有: ...

  8. Android 图片网格布局控件

    Android 图片网格布局控件 项目地址:MultiPictureView MultiPictureView是一个可以将多张图片以网格的方式显示的View,通过简单的接口实现烦人的布局,从此解放你的 ...

  9. recycleview横向展开_Android开发之基于RecycleView实现的头部悬浮控件

    RecyclerView是一种类似于ListView的一个滑动列表,但是RecyclerView和ListView相比,RecyclerView比ListView更好,RecyclerView支持横向 ...

  10. 推荐爱码哥移动开发平台十大常用的原生UI控件

    imag.js是一种NativeScript形式的框架,它兼具 Web 应用的灵活和 Native 应用的高性能,可以使用 JavaScript 来开发 iOS 和 Android 原生应用.在 Ja ...

最新文章

  1. python 无头模式 绕过检测_Python chrome 无头模式的问题
  2. python 四种单例模式
  3. 机器学习模型解释性工具SHAP
  4. c语言平滑raw图像(取平均值法)
  5. PyTorch:采用sklearn 工具生成这样的合成数据集+利用PyTorch实现简单合成数据集上的线性回归进行数据分析
  6. KRPano JS 场景编辑器源码
  7. ubuntu系统如何切换到root用户登录
  8. 20165306 第八周学习任务
  9. 01屏幕增强 sap_SAP (MM01 MM02 MM03)屏幕增强
  10. 在c语言中large的作用,输入两个数组,调用large函数比较,计数,输出统计结果...
  11. linux 自学系列:touch 命令
  12. HDU2089 不要62【数位DP+记忆化搜索】
  13. xbox360 ubuntu14.04连接问题
  14. 什么是集群负载均衡与高可用(有图详解)
  15. 卸载adobe系列产品工具
  16. 妙计叠出,谋而后动——融云以“锦囊”之策,守护客户全生命周期
  17. 上位机软件定制开发,如何选择服务商
  18. XHTML的目标,规则和细节
  19. kill the one(pjone歌词摘录)
  20. NLP之TF之LSTM:基于Tensorflow框架采用PTB数据集建立LSTM网络的自然语言建模

热门文章

  1. postfix导致maillog填满磁盘空间的巨坑!
  2. [BZOJ4815][CQOI2017]小Q的表格 数论+分块
  3. 深入React事件系统(React点击空白部分隐藏弹出层;React阻止事件冒泡失效)
  4. 译:Google的大规模集群管理工具Borg(二)------ Borg架构
  5. JSP/Servlet中的汉字编码问题
  6. DataTable转成字符串复制到txt文本的小例子
  7. IOS开发基础之NSURLSession的使用
  8. win配置环境变量以及一些变量换行类的小技巧
  9. oracle的pdb,oracle pdb基本管理
  10. textview文本超出部分用省略号表示