首先,这篇参考了别人的代码。根据自己的项目需求简单改造了一下,效果图如下

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" > <ListView
android:id="@+id/lv_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:cacheColorHint="@null"
android:divider="@null" >
</ListView> </LinearLayout>

接下来是Activity,准备数据就好了

 public class TimeLineTextActivity extends Activity{  

     private ListView listView;
private TimeLineAdapter adapter; @Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); listView=(ListView) findViewById(R.id.lv_list);
listView.setDividerHeight(0);
adapter = new TimeLineAdapter(this, initData());
listView.setAdapter(adapter); } private List<Map<String, Object>> initData() {
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); Map<String, Object> map = new HashMap<String, Object>();
map.put("title", "提交已完成......");
map.put("time", "2015-10-22 14:00:00");
list.add(map); map = new HashMap<String, Object>();
map.put("title", "正在审核中......");
map.put("time", "2015-10-22 15:00:00");
list.add(map); map = new HashMap<String, Object>();
map.put("title", "客服将会给您打电话......");
map.put("time", "2015-10-22 16:00:00");
list.add(map); map = new HashMap<String, Object>();
map.put("title", "订单已完成");
map.put("time", "2015-10-22 17:00:00");
list.add(map); return list; } }

Adapter:

 public class TimeLineAdapter extends BaseAdapter {
private Context context;
private List<Map<String,Object>> list;
private LayoutInflater inflater; public TimeLineAdapter(Context context, List<Map<String, Object>> list) {
super();
this.context = context;
this.list = list;
} @Override
public int getCount() {
// TODO Auto-generated method stub
return list.size();
} @Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
} @Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
} @Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
TimeLineHolder viewHolder = null;
if (convertView == null) {
inflater = LayoutInflater.from(parent.getContext());
convertView = inflater.inflate(R.layout.itemtimeline2, null);
viewHolder = new TimeLineHolder(); viewHolder.title = (TextView) convertView.findViewById(R.id.title);
viewHolder.time = (TextView) convertView.findViewById(R.id.time);
convertView.setTag(viewHolder);
} else {
viewHolder = (TimeLineHolder) convertView.getTag();
} String titleStr = list.get(position).get("title").toString(); viewHolder.title.setText(titleStr); return convertView; } static class TimeLineHolder{
private TextView title,time;
} }

每一个item的布局:

 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" > <View
android:id="@+id/view_0"
android:layout_width="1dp"
android:layout_height="25dp"
android:layout_below="@+id/layout_1"
android:layout_marginLeft="40dp"
android:background="#A6A6A6" />
<ImageView
android:id="@+id/image"
android:layout_width="15dp"
android:layout_height="15dp"
android:layout_below="@+id/view_0"
android:layout_marginLeft="33dp"
android:src="@drawable/timeline_green" />
<View
android:id="@+id/view_2"
android:layout_width="1dp"
android:layout_height="50dp"
android:layout_below="@+id/image"
android:layout_marginLeft="40dp"
android:background="#A6A6A6" /> <View
android:id="@+id/view_4"
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_alignBottom="@+id/view_2"
android:layout_marginLeft="55dp"
android:layout_marginRight="15dp"
android:background="#A6A6A6" /> <RelativeLayout
android:id="@+id/relative"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_margin="10dp"
android:layout_toRightOf="@+id/view_0"
android:layout_alignBottom="@+id/view_4"
android:padding="5dp"
android:orientation="vertical" > <TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:layout_marginTop="8dp"
android:maxEms="7"
android:paddingLeft="5dp"
android:singleLine="true"
android:text="需求提交成功"
android:textSize="16sp" />
<TextView
android:id="@+id/time"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:layout_below="@+id/title"
android:layout_marginTop="15dp"
android:maxEms="7"
android:paddingLeft="5dp"
android:singleLine="true"
android:text="2015-9-28"
android:textSize="14sp" /> </RelativeLayout> </RelativeLayout>

不看、不学不知道,原来这个东西看起来复杂,实际上挺简单的,就是一个ListView,希望对大家有帮助!

Android仿快递 物流时间轴 的代码实现的更多相关文章

  1. Asp.net+jquery+ajaxpro异步仿Facebook纵向时间轴效果

    Asp.net+jquery+ajaxpro异步仿Facebook纵向时间轴效果 在一个项目中,用到了时间轴展示产品的开发进度,为了更好用户体验,想到了Facebook的timeline效果, 搜了一 ...

  2. 基于jQuery发展历程时间轴特效代码

    分享一款基于jQuery发展历程时间轴特效代码,带左右箭头,数字时间轴选项卡切换特效下载.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div id="time ...

  3. ios 物流时间轴,自动匹配电话号码,可点击拨打

    http://www.code4app.com/thread-27587-1-1.html 资讯时间轴(折叠/展开) http://www.code4app.com/thread-32358-1-1. ...

  4. Android 类似时间轴的实现

    想要实现图片中的的时间轴的效果,设定了三种颜色,但是出来的只有一个黑色,还不是设定好的,而且长度很长的话不能滚动,下面上代码: 布局文件: <LinearLayout xmlns:android ...

  5. Android时间轴效果,直接使用在你的项目中

    近期开发app搞到历史查询,受腾讯qq的启示,搞一个具有时间轴效果的ui,看上去还能够,然后立即想到分享给小伙伴,,大家一起来看看,先上效果图吧 watermark/2/text/aHR0cDovL2 ...

  6. React Native 仿天猫物流跟踪时间轴

    最近心血来潮开始学习ReactNative,正好最近有一个项目可能会用到时间轴,页面原型类似于天猫的物流跟踪,如下图 分析之后决定使用ListView来实现,左边的时间轴则使用Art来绘制. 分析左边 ...

  7. Android 时间轴的实现

    时间轴 时间轴,顾名思义就是将发生的事件按照时间顺序罗列起来,给用户带来一种更加直观的体验.京东和淘宝的物流顺序就是一个时间轴(如图),想必大家都不陌生. 时间轴的初探 初次见到这种UI,感觉整个布局 ...

  8. Android 时间轴

    最近开发的app中要用到时间轴这东西,需要实现的效果如下: 想想这个东西应该可以用listview实现吧.然后最近就模拟着去写了: 首先写  listview的item的布局: listview_it ...

  9. android 简易时间轴(实质是ListView)

    ListView的应用 1.在很多时候是要用到时间轴的,有些处理的时间轴比较复杂,这里就给出一个比较简单的时间轴,其实就是ListView里面的Item的设计. 直接上代码: ListView,ite ...

随机推荐

  1. app的meta

    <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> < ...

  2. 微信电脑版微信1.1 for Windows更新 可@人/转发撤回消息/可播小视频

    微信电脑版微信1.1 for Windows发布更新了,版本号为1.1.0.18,群聊可@人/可转发撤回消息/可播小视频,功能越来越接近微信手机版了. 本次更新的一些新特点: 群聊中可以@人. 消息可 ...

  3. 天翼宽带政企网关B2-1P 如何获得超级管理员账号?

    RT 用useradmin没办法做NAT,想进telecomadmin里面看看,,,,,并且已经使用过nE7jA%5m这个密码登录,没有用! 求办法!!! 最佳答案 查找超级管理员密码方法: 1.用光 ...

  4. Inno Setup制作应用程序安装包

    我最近写了一个MFC应用程序,想发给其他的小伙伴玩一玩,直接发了个exe文件过去,结果发现小伙伴那边打不开.原来这个exe文件虽然是MFC静态编译的,但是还依赖了其他几个.dll文件,需要把这几个dl ...

  5. Android Studio升级后,开启时遇到tools.jar seems to be not in Android Studio错误?

    工作半年多,电子工程小白一枚.今天上班的时候,与几位同事聊到博客的问题.平时都是在别人的博客里找到问题的解决之妙法, 今天一个冲动之下,我决定也开始用博客记录工作的点滴,暂且当作笔记一用. 出于工作需 ...

  6. NoSuchMethodException问题总结

    1.编译异常,这个很容易发现并解决: method真的没有 替换jar包没有clean project. 2.编译正常,运行报错 这是一个遇到之后让人纳闷的异常,脑袋不转弯的时候真的容易被卡住.这时只 ...

  7. JS获取地址栏参数

    获取地址栏参数(其中name为你所需要的参数值) function GetQueryString(name) { var reg = new RegExp("(^|&)" ...

  8. Effective Java 读书笔记之五 枚举和注解

    Java1.5中引入了两个新的应用类型家族,新的类为枚举类型,新的接口为注解类型. 一.用enum代替int常量 1.枚举值由一组固定的常量组成合法值的类型. 二.用实例域代替序数 1.不要根据枚举的 ...

  9. Java 的printf(转)

    出处:http://blog.csdn.net/swandragon/article/details/4653600 public class TestPrintf{public static voi ...

  10. HDU 5007 Post Robot KMP (ICPC西安赛区网络预选赛 1001)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5007 解题报告:输入一篇文章,从头开始,当遇到 “Apple”, “iPhone”, “iPod”, ...