使用ExpandableListView时间轴效果达到
不废话,首先在地图上,查看结果
这是用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时间轴效果达到的更多相关文章
- CSS3实现时间轴效果
原文:CSS3实现时间轴效果 最近打开电脑就能看到极客学院什么新用户vip免费一个月,就进去看看咯,这里就不说它的课程怎么滴了,里面实战路径图页面看到了这个效果: 有点像时间轴的赶脚,而且每一块鼠标悬 ...
- Asp.net+jquery+ajaxpro异步仿Facebook纵向时间轴效果
Asp.net+jquery+ajaxpro异步仿Facebook纵向时间轴效果 在一个项目中,用到了时间轴展示产品的开发进度,为了更好用户体验,想到了Facebook的timeline效果, 搜了一 ...
- Android实训案例(三)——实现时间轴效果的ListView,加入本地存储,实现恋爱日记的效果!
Android实训案例(三)--实现时间轴效果的ListView,加入本地存储,实现恋爱日记的效果! 感叹离春节将至,也同时感叹时间不等人,一年又一年,可是我依然是android道路上的小菜鸟,这篇讲 ...
- JS时间轴效果(类似于qq空间时间轴效果)
在上一家公司写了一个时间轴效果,今天整理了下,感觉有必要写一篇博客出来 给大家分享分享 当然代码还有很多不足的地方,希望大家多指点指点下,此效果类似于QQ空间或者人人网空间时间轴效果,当时也是为了需求 ...
- Android时间轴效果,直接使用在你的项目中
近期开发app搞到历史查询,受腾讯qq的启示,搞一个具有时间轴效果的ui,看上去还能够,然后立即想到分享给小伙伴,,大家一起来看看,先上效果图吧 watermark/2/text/aHR0cDovL2 ...
- js实现的时间轴效果
今天整理以前的资料发现以前写的一个时间轴效果,当时也是网上找了很久没有找到,就自己写了一个,现在发出来给有需要的人,代码写的可能有点乱. 效果图: 下面是美工做的设计图的效果(有个美工就是好): 下面 ...
- jQuery鼠标滑过横向时间轴效果
jQuery鼠标滑过横向时间轴效果---效果图: jQuery鼠标滑过横向时间轴效果---全部代码: <!DOCTYPE html> <html> <head> & ...
- SmohanTimeLine.js 酷炫的时间轴效果
展示地址 点此下载 原文出处 一.参数说明 item : '.item', //项目元素 top : 30, //与下一行的间距 pointWidth : 22, //时间点宽度 cornerWidt ...
- jquery时间轴tab切换效果实现结合swiper实现滑动显示效果
需求:根据时间轴进行tab页面内容切换(时间轴需要滑动查看并选择) 实现思路: 结合swiper插件实现滑动显示效果 根据transform: translateX进行左侧切换效果的实现(具体实现cs ...
随机推荐
- bootstrap的popover在trigger设置为hover时不隐藏popover
使用bootstrap的popover,trigger设置为hover时,可以实现当鼠标放置到目标元素上时显示popover,可是无法实现当鼠标移动到popover上时不隐藏popover,在网上找了 ...
- Java 并发专题 :闭锁 CountDownLatch 之一家人一起吃个饭
最近一直整并发这块东西,顺便写点Java并发的例子,给大家做个分享,也强化下自己记忆. 每天起早贪黑的上班,父母每天也要上班,话说今天定了个饭店,一家人一起吃个饭,通知大家下班去饭店集合.假设:3个人 ...
- Asp.net
视频摘要
Asp.net一遍又一遍视频最近,例如中,大多数的实现.由于原因的版本号,.当然学过是学过.总结不可缺少. 先宏观后微观.刚学完,感觉知识特别乱,所以先画了张图: watermark/2/text/a ...
- 在C#环境中动态调用IronPython脚本(二)
一.Python数据类型与C#数据类型的对应 Python中数据类型中的简单类型,例如int,float,string可以对应到C#环境中的int32,double,string,这些对应比较直观,P ...
- Caused by: java.lang.ClassNotFoundException: org.objectweb.asm.ClassVisitor
1.错误描写叙述 信息: Setting autowire strategy to name 2014-7-13 1:37:43 org.apache.struts2.spring.StrutsSpr ...
- Streak OpenCart 商城自适应主题模板 ABC-0010
兼容浏览器 IE9, Firefox, Safari, Opera, Chrome OpenCart版本号 OpenCart 1.5.x, OpenCart 1.5.6.x, OpenCart 1.5 ...
- 采用truelicense进行Java规划license控制 扩展可以验证后,license 开始结束日期,验证绑定一个给定的mac住址
采用truelicense进行Java规划license控制 扩展可以验证后,license 开始结束日期,验证绑定一个给定的mac住址. Truelicense 它是一个开源java license ...
- php 两个文件之间的相对路径的计算方法
php 两个文件之间的相对路径的计算方法 比如: 文件A 的路径是 /home/web/lib/img/cache.php 文件B的路径是 /home/web/api/img/show.php 那么. ...
- c#中的属性
在C#中我们可以很自由的访问共有字段,但有时我们可能需要某字段只能读或者写,或在改变字段值得时候做一些其他事情,显然这些仅仅依靠字段是无法实现的,于是便有了属性. 1.基本用法 c#中的属性由属性作用 ...
- Lua面向对象设计(转)
首先对于Lua语言,它没有打算被用来进行大型的程序设计,相反,Lua目标定于小型到中型的程序设计,通常是作为大型系统的一部分,所以它只提供了一套精简的元素,很多高级语言的概念都没有.这样Lua就成为了 ...