• Android仿快递 物流时间轴 的代码实现


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

    xml:代码

     1 <?xml version="1.0" encoding="utf-8"?>  
     2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
     3     android:layout_width="match_parent"  
     4     android:layout_height="match_parent"  
     5     android:orientation="vertical" >  
     6   
     7     <ListView  
     8         android:id="@+id/lv_list"  
     9         android:layout_width="match_parent"  
    10         android:layout_height="wrap_content"  
    11         android:cacheColorHint="@null"  
    12         android:divider="@null" >  
    13     </ListView>  
    14   
    15 </LinearLayout>  

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

     1 public class TimeLineTextActivity extends Activity{  
     2       
     3     private ListView listView;  
     4     private TimeLineAdapter adapter;  
     5       
     6     @Override  
     7     protected void onCreate(Bundle savedInstanceState) {  
     8         // TODO Auto-generated method stub  
     9         super.onCreate(savedInstanceState);  
    10         setContentView(R.layout.activity_main);  
    11           
    12         listView=(ListView) findViewById(R.id.lv_list);  
    13         listView.setDividerHeight(0);    
    14         adapter = new TimeLineAdapter(this, initData());  
    15         listView.setAdapter(adapter);  
    16           
    17     }  
    18   
    19     private List<Map<String, Object>> initData() {  
    20         List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();    
    21           
    22         Map<String, Object> map = new HashMap<String, Object>();    
    23         map.put("title", "提交已完成......");  
    24         map.put("time", "2015-10-22  14:00:00");  
    25         list.add(map);  
    26           
    27         map = new HashMap<String, Object>();    
    28         map.put("title", "正在审核中......");  
    29         map.put("time", "2015-10-22  15:00:00");  
    30         list.add(map);  
    31           
    32         map = new HashMap<String, Object>();    
    33         map.put("title", "客服将会给您打电话......");  
    34         map.put("time", "2015-10-22  16:00:00");  
    35         list.add(map);  
    36           
    37         map = new HashMap<String, Object>();    
    38         map.put("title", "订单已完成");  
    39         map.put("time", "2015-10-22  17:00:00");  
    40         list.add(map);  
    41                   
    42         return list;  
    43           
    44     }  
    45   
    46   
    47 }  

    Adapter:

     1 public class TimeLineAdapter extends BaseAdapter {  
     2     private Context context;  
     3     private List<Map<String,Object>> list;  
     4      private LayoutInflater inflater;    
     5        
     6      public TimeLineAdapter(Context context, List<Map<String, Object>> list) {    
     7             super();    
     8             this.context = context;    
     9             this.list = list;    
    10         }    
    11   
    12     @Override  
    13     public int getCount() {  
    14         // TODO Auto-generated method stub  
    15         return list.size();  
    16     }  
    17   
    18     @Override  
    19     public Object getItem(int position) {  
    20         // TODO Auto-generated method stub  
    21         return position;  
    22     }  
    23   
    24     @Override  
    25     public long getItemId(int position) {  
    26         // TODO Auto-generated method stub  
    27         return position;  
    28     }  
    29   
    30     @Override  
    31     public View getView(int position, View convertView, ViewGroup parent) {  
    32         // TODO Auto-generated method stub  
    33         TimeLineHolder viewHolder = null;    
    34         if (convertView == null) {    
    35             inflater = LayoutInflater.from(parent.getContext());    
    36             convertView = inflater.inflate(R.layout.itemtimeline2, null);    
    37             viewHolder = new TimeLineHolder();    
    38     
    39             viewHolder.title = (TextView) convertView.findViewById(R.id.title);    
    40             viewHolder.time = (TextView) convertView.findViewById(R.id.time);    
    41             convertView.setTag(viewHolder);    
    42         } else {    
    43             viewHolder = (TimeLineHolder) convertView.getTag();    
    44         }    
    45             
    46         String titleStr = list.get(position).get("title").toString();    
    47             
    48         
    49         viewHolder.title.setText(titleStr);    
    50     
    51         return convertView;    
    52           
    53     }  
    54       
    55     static class TimeLineHolder{  
    56         private TextView title,time;  
    57     }  
    58   
    59 }

    每一个item的布局:

     1 <?xml version="1.0" encoding="utf-8"?>  
     2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
     3     android:layout_width="match_parent"  
     4     android:layout_height="match_parent"  
     5     android:orientation="vertical" >  
     6       
     7   
     8       
     9      <View    
    10         android:id="@+id/view_0"    
    11         android:layout_width="1dp"    
    12         android:layout_height="25dp"    
    13         android:layout_below="@+id/layout_1"    
    14         android:layout_marginLeft="40dp"    
    15         android:background="#A6A6A6" />    
    16     <ImageView    
    17         android:id="@+id/image"    
    18         android:layout_width="15dp"    
    19         android:layout_height="15dp"    
    20         android:layout_below="@+id/view_0"    
    21         android:layout_marginLeft="33dp"    
    22         android:src="@drawable/timeline_green" />  
    23     <View    
    24         android:id="@+id/view_2"    
    25         android:layout_width="1dp"    
    26         android:layout_height="50dp"    
    27         android:layout_below="@+id/image"    
    28         android:layout_marginLeft="40dp"    
    29         android:background="#A6A6A6" />  
    30       
    31     <View    
    32         android:id="@+id/view_4"    
    33         android:layout_width="match_parent"    
    34         android:layout_height="1dp"    
    35         android:layout_alignBottom="@+id/view_2"  
    36         android:layout_marginLeft="55dp"    
    37         android:layout_marginRight="15dp"    
    38         android:background="#A6A6A6" />  
    39       
    40         <RelativeLayout    
    41         android:id="@+id/relative"    
    42         android:layout_width="fill_parent"    
    43         android:layout_height="match_parent"    
    44         android:layout_margin="10dp"    
    45         android:layout_toRightOf="@+id/view_0"   
    46         android:layout_alignBottom="@+id/view_4"   
    47         android:padding="5dp"  
    48         android:orientation="vertical" >    
    49     
    50   
    51     
    52         <TextView    
    53             android:id="@+id/title"    
    54             android:layout_width="match_parent"    
    55             android:layout_height="wrap_content"    
    56             android:ellipsize="end"    
    57             android:layout_marginTop="8dp"  
    58             android:maxEms="7"    
    59             android:paddingLeft="5dp"    
    60             android:singleLine="true"    
    61             android:text="需求提交成功"    
    62             android:textSize="16sp" />    
    63         <TextView    
    64             android:id="@+id/time"    
    65             android:layout_width="match_parent"    
    66             android:layout_height="wrap_content"    
    67             android:ellipsize="end"    
    68             android:layout_below="@+id/title"    
    69             android:layout_marginTop="15dp"  
    70             android:maxEms="7"    
    71             android:paddingLeft="5dp"    
    72             android:singleLine="true"    
    73             android:text="2015-9-28"    
    74             android:textSize="14sp" />    
    75     
    76     </RelativeLayout>    
    77       
    78       
    79          
    80   
    81 </RelativeLayout> 

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

  • 相关阅读:
    树线段hdu 4508 美素数(线段树)
    自定义context自定义Dialog之Progress(二)
    实现语言C语言简单实现五子棋
    调用博客paip.基于HTML gui界面的javascript JS实现SLEEP。。
    水印控件windows phone中,制作一个自定义的密码输入框控件,含图片,有水印,星号显示
    请求网络网络编程
    调试网页PAIP HTML的调试与分析工具
    输出流输入输入输出流
    标记协议http协议与XML书写规范及解析技术
    描述算法10673 Play with Floor and Ceil
  • 原文地址:https://www.cnblogs.com/huolongluo/p/5727795.html
Copyright © 2020-2023  润新知