不废话,首先在地图上,查看结果

这是用ExpandableListView来实现时间轴效果,原理比較简单,以月份为第一级,以天为第二级来实现的。

package com.hj.main;

import java.util.ArrayList;
import java.util.List; import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ExpandableListView;
import android.widget.ExpandableListView.OnGroupClickListener; import com.hj.adapter.StatusExpandAdapter;
import com.hj.entity.OneStatusEntity;
import com.hj.entity.TwoStatusEntity;
import com.sanrenx.main.R;
/**
* 时间轴
* @author shuiji
*
*/
public class MainActivity extends Activity {
private static final String TAG = "haijiang";
private List<OneStatusEntity> oneList;
private ExpandableListView expandlistView;
private StatusExpandAdapter statusAdapter;
private Context context; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
context = this;
expandlistView = (ExpandableListView) findViewById(R.id.expandlist); putInitData(); statusAdapter = new StatusExpandAdapter(context, oneList);
expandlistView.setAdapter(statusAdapter);
expandlistView.setGroupIndicator(null); // 去掉默认带的箭头 // 遍历全部group,将全部项设置成默认展开
int groupCount = expandlistView.getCount();
for (int i = 0; i < groupCount; i++) {
expandlistView.expandGroup(i);
}
expandlistView.setOnGroupClickListener(new OnGroupClickListener() { @Override
public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) {
// TODO Auto-generated method stub
return true;
}
}); } private void putInitData() {
String[] strArray = new String[]{"6月", "7月", "8月"};
String[] str1 = new String[]{"抓娃娃,买100送1000", "抓娃娃。买100送100", "抓娃娃,买100送500", "抓娃娃。买100送2000"};
String[] str2 = new String[]{"抓娃娃,买100送100", "抓娃娃。买100送1000", "抓娃娃,买100送1000", "抓娃娃,买100送500"};
String[] str3 = new String[]{"抓娃娃。买100送1000", "抓娃娃,买100送1000", "抓娃娃。买100送100", "抓娃娃,买100送1000"}; String[] timeStr1 = new String[]{"12日\n09:00 AM", "8日\n13:00 AM", "13日\n09:00 AM", "29日\n22:00 AM"};
String[] timeStr2 = new String[]{"4日\n09:00 AM", "8日\n09:00 AM", "13日\n09:00 AM", "29日\n09:00 AM"};
String[] timeStr3 = new String[]{"4日\n13:00 AM", "8日\n09:00 AM", "13日\n09:00 AM", "29日\n09:00 AM"}; oneList = new ArrayList<OneStatusEntity>();
for(int i=0 ; i<strArray.length ; i++){
OneStatusEntity one = new OneStatusEntity();
one.setStatusName(strArray[i]);
List<TwoStatusEntity> twoList = new ArrayList<TwoStatusEntity>();
String[] order = str1;
String[] time = timeStr1;
switch (i) {
case 0:
order = str1;
time = timeStr1;
Log.i(TAG, "str1");
break;
case 1:
order = str2;
time = timeStr2;
Log.i(TAG, "str2");
break;
case 2:
order = str3;
time = timeStr3;
Log.i(TAG, "str3");
break;
} for(int j=0 ; j<order.length ; j++){
TwoStatusEntity two = new TwoStatusEntity();
two.setActionName(order[j]);
two.setActionTime(time[j]);
twoList.add(two);
}
one.setTwoList(twoList);
oneList.add(one);
}
}
}

以下是适配器代码

package com.hj.adapter;

import java.util.List;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.TextView; import com.hj.entity.OneStatusEntity;
import com.hj.entity.TwoStatusEntity;
import com.sanrenx.main.R; public class StatusExpandAdapter extends BaseExpandableListAdapter {
//private static final String TAG = "StatusExpandAdapter";
private LayoutInflater inflater = null;
private List<OneStatusEntity> oneList;
private Context context; public StatusExpandAdapter(Context context, List<OneStatusEntity> oneList) {
this.oneList = oneList;
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.context = context;
} @Override
public int getGroupCount() {
// TODO Auto-generated method stub
return oneList.size();
} @Override
public int getChildrenCount(int groupPosition) {
if(oneList.get(groupPosition).getTwoList() == null){
return 0;
}else{
return oneList.get(groupPosition).getTwoList().size();
}
} @Override
public OneStatusEntity getGroup(int groupPosition) {
// TODO Auto-generated method stub
return oneList.get(groupPosition);
} @Override
public TwoStatusEntity getChild(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return oneList.get(groupPosition).getTwoList().get(childPosition);
} @Override
public long getGroupId(int groupPosition) {
// TODO Auto-generated method stub
return groupPosition;
} @Override
public long getChildId(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return childPosition;
} @Override
public boolean hasStableIds() {
// TODO Auto-generated method stub
return false;
} @Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { GroupViewHolder holder = new GroupViewHolder(); if (convertView == null) {
convertView = inflater.inflate(R.layout.one_status_item, null);
}
//设置第一级月份
holder.groupName = (TextView) convertView.findViewById(R.id.one_status_time);
holder.group_tiao = (TextView) convertView.findViewById(R.id.group_tiao); holder.groupName.setText(oneList.get(groupPosition).getStatusName());
return convertView;
} @Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView,
ViewGroup parent) {
ChildViewHolder viewHolder = null;
TwoStatusEntity entity = getChild(groupPosition, childPosition);
if (convertView != null) {
viewHolder = (ChildViewHolder) convertView.getTag();
} else {
viewHolder = new ChildViewHolder();
convertView = inflater.inflate(R.layout.two_status_item, null);
viewHolder.actionName = (TextView) convertView.findViewById(R.id.action_name);
viewHolder.child_tiao = (TextView) convertView.findViewById(R.id.tiao);
viewHolder.actionTime = (TextView) convertView.findViewById(R.id.action_time);
}
//设置第二级时间和事件名称
viewHolder.actionName.setText(entity.getActionName());
viewHolder.actionTime.setText(entity.getActionTime());
convertView.setTag(viewHolder);
return convertView;
} @Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return false;
} private class GroupViewHolder {
TextView groupName;
public TextView group_tiao;
} private class ChildViewHolder {
public TextView actionName;
public TextView actionTime;
public TextView child_tiao;
} }

代码比較简单。重要的地方做了凝视。大家能够把代码下载下来改动成自己想要的效果,因为我下载没有点今天0分钟。所以,我收到一分。莫怪!谢谢

下载链接:点击打开链接

使用ExpandableListView时间轴效果达到的更多相关文章

  1. CSS3实现时间轴效果

    原文:CSS3实现时间轴效果 最近打开电脑就能看到极客学院什么新用户vip免费一个月,就进去看看咯,这里就不说它的课程怎么滴了,里面实战路径图页面看到了这个效果: 有点像时间轴的赶脚,而且每一块鼠标悬 ...

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

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

  3. Android实训案例(三)——实现时间轴效果的ListView,加入本地存储,实现恋爱日记的效果!

    Android实训案例(三)--实现时间轴效果的ListView,加入本地存储,实现恋爱日记的效果! 感叹离春节将至,也同时感叹时间不等人,一年又一年,可是我依然是android道路上的小菜鸟,这篇讲 ...

  4. JS时间轴效果(类似于qq空间时间轴效果)

    在上一家公司写了一个时间轴效果,今天整理了下,感觉有必要写一篇博客出来 给大家分享分享 当然代码还有很多不足的地方,希望大家多指点指点下,此效果类似于QQ空间或者人人网空间时间轴效果,当时也是为了需求 ...

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

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

  6. js实现的时间轴效果

    今天整理以前的资料发现以前写的一个时间轴效果,当时也是网上找了很久没有找到,就自己写了一个,现在发出来给有需要的人,代码写的可能有点乱. 效果图: 下面是美工做的设计图的效果(有个美工就是好): 下面 ...

  7. jQuery鼠标滑过横向时间轴效果

    jQuery鼠标滑过横向时间轴效果---效果图: jQuery鼠标滑过横向时间轴效果---全部代码: <!DOCTYPE html> <html> <head> & ...

  8. SmohanTimeLine.js 酷炫的时间轴效果

    展示地址 点此下载 原文出处 一.参数说明 item : '.item', //项目元素 top : 30, //与下一行的间距 pointWidth : 22, //时间点宽度 cornerWidt ...

  9. jquery时间轴tab切换效果实现结合swiper实现滑动显示效果

    需求:根据时间轴进行tab页面内容切换(时间轴需要滑动查看并选择) 实现思路: 结合swiper插件实现滑动显示效果 根据transform: translateX进行左侧切换效果的实现(具体实现cs ...

随机推荐

  1. state pattern

    6 状态模式总结 状态模式将一个对象在不同状态下的不同行为封装在一个个状态类中,通过设置不同的状态对象可以让环境对象拥有不同的行为,而状态转换的细节对于客户端而言是透明的,方便了客户端的使用.在实际开 ...

  2. Dubbo入门基础与实例讲解(转)

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka Dubbo是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,0 ...

  3. 直接选择排序----java实现

    直接选择排序思路: 从待排序数据中选择第一个假定为最小的下标,然后他后面的与他循环比较,得到真的最小值下标,然后最小值前的那一区段依次后移,并把最小值赋值给第一个元素.第二次时,假定第二个为最小,然后 ...

  4. Vbox创建COM对象失败

    近期在使用vbox时出现下面错误:创建COM对象失败,应用程序将被中断 在CMD里面输入下面命令: C:\Users\Administrator>d: D:\>cd D:\Program ...

  5. cocos2dx 3.0 学习笔记 引用cocostudio库 的环境配置

    cocostudio创建UI并应用时须要引用cocostudio库,须要额外的环境配置: 之前已经搭配好了基础的开发环境,包含 1) JDK 2) Python 2.7 3) ant 4) visua ...

  6. Windows8和Windows Phone应用开发主题编码汇总

    原文:Windows8和Windows Phone应用开发主题编码汇总 在Windows 8和Windows Phone应用开发中经常需要自定义一些Windows Store应用风格主题,下面列举一些 ...

  7. Chapter 1 Securing Your Server and Network(4):使用虚拟服务帐号

    原文:Chapter 1 Securing Your Server and Network(4):使用虚拟服务帐号 原文出处:http://blog.csdn.net/dba_huangzj/arti ...

  8. iOS多用连接、反向协议、安全

    资源 WWDC-2013-Session-708 BlackHat-US-2014-"It Just (Net)works" Understanding Multipeer Con ...

  9. hadoop-HBase-observer的一个样例

    hbase(main):021:0> describe 'users' DESCRIPTION                                                   ...

  10. MEF初体验之九:部件生命周期

    理解MEF容器中部件的生命周期及其含义是非常重要的.鉴于MEF重点在开放端应用程序,这将变得尤其重要的,一旦app ships和第三方扩展开始运行,作为应用程序的开发者将很好地控制这一系列的部件.生命 ...