Android -- 时间轴(ListView)

1. 实现效果

  

  如果判断当前的属性和上一个属性相同时,不显示编号信息 ,否则就显示

2.  主要是在适配器上面做判断

  bean  --> Tip

  

package com.example.timetest;

/**
 * 封装要显示数据的bean ---> Tip
 *
 * @author Administrator
 *
 */
public class Tip {

	private String name;

	private String time;

	private String day;

	private String number;

	public Tip ( ) {

		super ( );
	}

	public Tip ( String name , String time , String day ,
	               String number ) {

		super ( );
		this.name = name;
		this.time = time;
		this.day = day;
		this.number = number;
	}

	public String getName ( ) {

		return name;
	}

	public void setName ( String name ) {

		this.name = name;
	}

	public String getTime ( ) {

		return time;
	}

	public void setTime ( String time ) {

		this.time = time;
	}

	public String getDay ( ) {

		return day;
	}

	public void setDay ( String day ) {

		this.day = day;
	}

	public String getNumber ( ) {

		return number;
	}

	public void setNumber ( String number ) {

		this.number = number;
	}

}

Java

    

listView = ( ListView ) findViewById ( R.id.listView );

		List < Tip > list = new ArrayList < Tip > ( );
		list.add ( new Tip ( "1111" , "11:11" , "1" ,
		                              "111111" ) );
		list.add ( new Tip ( "2222" , "22:22" , "1" ,
		                              "2222" ) );
		list.add ( new Tip ( "3333" , "33:33" , "2" ,
		                              "3333" ) );
		list.add ( new Tip ( "4444" , "44:44" , "3" ,
		                              "4444" ) );
		list.add ( new Tip ( "5555" , "55:55" , "3" ,
		                              "5555" ) );
		list.add ( new Tip ( "6666" , "66:66" , "6" ,
		                              "6666" ) );

		adapter = new ListAdapter ( this , list );

		listView.setAdapter ( adapter );

3. 适配器

  

package com.example.timetest;

import java.util.List;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

public class ListAdapter extends BaseAdapter {

	public Context context;

	private List < Tip > list;

	public ListAdapter (
	               Context context , List < Tip > list ) {

		this.context = context;
		this.list = list;
	}

	@ Override
	public int getCount ( ) {

		// TODO Auto-generated method stub
		return list.size ( );
	}

	@ Override
	public Tip getItem ( int position ) {

		// TODO Auto-generated method stub
		return list.get ( 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

		ViewHolder holder = null;
		if (convertView == null) {

			convertView = LayoutInflater.from (
			                              context )
			                              .inflate ( R.layout.list_item ,
			                                                            null );
			holder = new ViewHolder ( );
			holder.name = ( TextView ) convertView
			                              .findViewById ( R.id.name );
			holder.time = ( TextView ) convertView
			                              .findViewById ( R.id.time );
			holder.day = ( TextView ) convertView
			                              .findViewById ( R.id.day );
			holder.number = ( TextView ) convertView
			                              .findViewById ( R.id.number );
			convertView.setTag ( holder );
		}
		else {

			holder = ( ViewHolder ) convertView
			                              .getTag ( );

		}

		Tip tip = list.get ( position );

		holder.name.setText ( tip.getName ( ) );
		holder.time.setText ( tip.getTime ( ) );
		holder.day.setText ( tip.getDay ( ) );
		holder.number.setText ( tip.getNumber ( ) );

		if (position == 0) {

		}
		else {

			if (tip.getDay ( )
			                              .equals ( list.get ( position - 1 )
			                                                            .getDay ( ) )) {
				holder.day.setVisibility ( View.GONE );
			}
			else {
				holder.day.setVisibility ( View.VISIBLE );
			}

		}

		return convertView;
	}

	private class ViewHolder {

		public TextView name;

		public TextView time;

		public TextView day;

		public TextView number;

	}

}

4. layout

    

<?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="wrap_content"
    android:orientation="horizontal" >

    <!-- day和time 的显示 -->

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="70dp"
        android:layout_marginLeft="10dp"
        android:orientation="vertical" >

        <View
            android:layout_width="1dp"
            android:layout_height="15dp"
            android:layout_marginLeft="15dp"
            android:background="#c7c7c7" />

        <TextView
            android:id="@+id/day"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:background="#c7c7c7"
            android:text="今天" />

        <View
            android:layout_width="1dp"
            android:layout_height="5dp"
            android:layout_marginLeft="15dp"
            android:background="#c7c7c7" />

        <TextView
            android:id="@+id/time"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:text="12:00" />

        <View
            android:layout_weight="1"
            android:layout_width="1dp"
            android:layout_height="15dp"
            android:layout_marginLeft="15dp"
            android:background="#c7c7c7" />
    </LinearLayout>

    <!-- 中间部分信息的显示 -->

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:layout_marginLeft="10dp"
        android:layout_weight="1"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/test"
            android:textSize="20dp" />

        <TextView
            android:id="@+id/number"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/test"
            android:textSize="16dp" />
    </LinearLayout>

    <!-- 图片的显示 -->

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:layout_marginRight="10dp"
        android:src="@drawable/ic_launcher" />

</LinearLayout>

5.  每天进步一点点  嘿嘿  加油

时间: 2024-10-24 15:57:50

Android -- 时间轴(ListView)的相关文章

Android 时间轴

效果图: 数据是随便填的,显得有点乱,但是不影响效果.实现方面主要是用ListView来实现,主要是根据ListView的item位置与上一条数据进行比较,来控制时间的显示隐藏效果.思路很简单,下面看代码实现: 首先是页面的整体布局,很简单,就一个ListView: res/layout/activity_main.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:and

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

近期开发app搞到历史查询,受腾讯qq的启示,搞一个具有时间轴效果的ui,看上去还能够,然后立即想到分享给小伙伴,,大家一起来看看,先上效果图吧 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" > 接下来就是代码了,axtivity的布局代码.非常easy.就是一个listview <?xml v

Android 时间轴TimeLine

代码:这里

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

ListView的应用 1.在很多时候是要用到时间轴的,有些处理的时间轴比较复杂,这里就给出一个比较简单的时间轴,其实就是ListView里面的Item的设计. 直接上代码: ListView,item的xml文件-->time_item.xml 1 <?xml version="1.0" encoding="utf-8"?> 2 <RelativeLayout xmlns:android="http://schemas.andro

android项目之时间轴(转载)

转载自:http://blog.csdn.net/caiwenfeng_for_23/article/details/38279317 最近开发的app中要用到时间轴这东西,需要实现的效果如下: 想想这个东西应该可以用listview实现吧.然后最近就模拟着去写了: 首先写  listview的item的布局: listview_item.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLay

Android 类似时间轴的实现

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

Android自定义View实现垂直时间轴布局

时间轴 时间轴,顾名思义就是将发生的事件按照时间顺序罗列起来,给用户带来一种更加直观的体验.京东和淘宝的物流顺序就是一个时间轴,想必大家都不陌生,如下图: 分析 实现这个最常用的一个方法就是用ListView,我这里用继承LinearLayout的方式来实现.首先定义了一些自定义属性: attrs.xml <?xml version="1.0" encoding="utf-8"?> <resources> <declare-stylea

Android实现时间轴

昨天群里有讨论时间轴的项目,没有接触过,以为很吊,研究之后才知道表面都是忽悠人的,使用listview就能实现了,也没有什么新鲜的东西 废话少说,直接上图 图片和文字都可以私人订制 没什么好说的,直接上代码吧!相信你能看懂 1.时间轴item的布局文件 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.c

listView实现时间轴

遇到一需求做一个时间轴左边是时间,右边是内容,中间就是那个轴的图片, ?1.中间轴线的图片需要根据内容的多少被拉长: ?2.顶部的圆点图片的位置不能左右边内容的顶部: ?3.底部不要轴线以圆点ImageView结束: 分析: 问题?1:设置图片parent的parent为wrap_content,设置android:minHeight="100dp",设置parent为match_parent;设置轴线ImageView为match_parent 问题?2:在轴线ImageView上面