当前位置:  编程技术>移动开发
本页文章导读:
    ▪内部类运用总结(参考白度文献上的文章)        内部类使用总结(参考白度文献上的文章) 我是一个java基础不太好的人,现在绝大多数人都是利用自己的java知识涉足android,而我发觉我自己是在利用android学习java:所以在下班待在家的.........
    ▪ 一个简单的SimpleAdapter工具类-SimpleAdapterUtil        1个简单的SimpleAdapter工具类-SimpleAdapterUtil 1个简单的SimpleAdapter工具类-SimpleAdapterUtil     根据android.widget.SimpleAdapter来生成对应需要装备的适配器。     代码:   版本一:数据格式为List<Obje.........
    ▪ [转]Java字符串变换为日期和时间比较大小       [转]Java字符串转换为日期和时间比较大小 方法一: DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd"); String dateBegin=fmt.format(carrierCommand.getDateBegin()); String dateEnd=fmt.format(carrierCommand.getDateEnd()); //如果.........

[1]内部类运用总结(参考白度文献上的文章)
    来源: 互联网  发布时间: 2014-02-18
内部类使用总结(参考白度文献上的文章)
我是一个java基础不太好的人,现在绝大多数人都是利用自己的java知识涉足android,而我发觉我自己是在利用android学习java:
所以在下班待在家的时候进一步棍固自己惨兮兮的java:
下面要写的是对java内部类学习的部分,希望写在这里跟大家一起分享:

1.定义:放在一个类的内部的类我们就叫内部类

2.作用:
   1.内部类可以很好的实现隐藏
     一般的非内部类,是不允许有 private 与protected权限的,但内部类可以
   2.内部类拥有外围类的所有元素的访问权限
   3.可是间接实现多重继承
   4.可以避免修改接口而实现同一个类中两种同名方法的调用。

3.实现隐藏
   平时我们对类的访问权限,都是通过类前面的访问修饰符来限制的,一般的非内部类,是不允许有 private 与protected权限的,但内部类可以,所以我们能通过内部类来隐藏我们的信息。可以看下面的例子
接口
package com.edison;
 
public interface Incrementable
{
 void increment();
}


具体类:
package com.edison;
 
public class Example {
   
    private class InsideClass implements InterfaceTest
    {
         public void test()
         {
             System.out.println("这是一个测试");
         }
    }
    public InterfaceTest getIn()
    {
        return new InsideClass();
    }
}

上面InsideClass是内部类,访问修饰符是private

客户端程序
package com.edison;
 
public class TestExample {
 
 public static void main(String args[])
 {
    Example a=new Example();
    InterfaceTest a1=a.getIn();
    a1.test();
 }
}

    从这段代码里面我只知道Example的getIn()方法能返回一个InterfaceTest 实例但我并不知道这个实例是这么实现的。而且由于InsideClass 是private的,所以我们如果不看代码的话根本看不到这个具体类的名字,所以说它可以很好的实现隐藏。

2.可以无条件地访问外围类的所有元素
package com.edison;
 
public class TagBean {
 
 private String name="edison";
   private class InTest
   {
      public InTest()
      {
          System.out.println(name);
      }
   }
   public void test()
   {
    new InTest();
   }
   public static void main(String args[])
   {
       TagBean bb=new TagBean();
       bb.test();
   }
}

    从上面类中name这个变量是在TagBean里面定义的私有变量。这个变量在内部类中可以无条件地访问System.out.println(name);

3.可以实现多重继承
    个人认为它是内部类存在的最大理由之一。正是由于他的存在使得Java的继承机制更加完善。大家都知道Java只能继承一个类,它的多重继承在我们没有学习内部类之前是用接口来实现的。但使用接口有时候有很多不方便的地方。比如我们实现一个接口就必须实现它里面的所有方法。而有了内部类就不一样了。它可以使我们的类继承多个具体类或抽象类。大家看下面的例子。

类一
 
package com.edison;
 
public class Example1 {
 
   public String name()
   {
       return "liutao";
   }
}

类二
package com.edison;
 
public class Example2 {
 
    public int age()
    {
        return 25;
    }
}


类三
 
package com.edison;
 
public class MainExample 
{
   private class test1 extends Example1 
    {
        public String name()
        {
          return super.name();
        }
    }
    private class test2 extends Example2
    {
       public int age()
       {
         return super.age();
       }
    }
   public String name()
    {
    return new test1().name(); 
   }
   public int age()
   {
       return new test2().age();
   }
   public static void main(String args[])
   {
       MainExample mi=new MainExample();
       System.out.println("姓名:"+mi.name());
       System.out.println("年龄:"+mi.age());
   }
}

    注意看类三,里面分别实现了两个内部类 test1,和test2 ,test1类又继承了Example1,test2继承了Example2,这样我们的类三MainExample就拥有了Example1和Example2的方法和属性,也就间接地实现了多继承。

四、 避免修改接口而实现同一个类中两种同名方法的调用。
大家假想一下如果,你的类要继承一个类,还要实现一个接口,可是你发觉你继承的类和接口里面有两个同名的方法怎么办?你怎么区分它们??这就需要我们的内部类了。看下面的代码
接口
 
package com.edison;
 
public interface Incrementable
{
 void increment();
}


类 MyIncrement
 
package com.edison;
 
public class MyIncrement {
 
    public void increment()
    {
      System.out.println("Other increment()");
    }
    static void f(MyIncrement f)
    {
        f.increment();
    }
 
}

    两个方法都是一样的。在看下面这个类要继承这两个类
如果不用内部类
package com.edison;
 
public class Callee2 extends MyIncrement implements Incrementable
{
public void increment()
      {
        //代码
       }
}

    increment()这个方法是属于覆盖MyIncrement这里的方法呢?还是Incrementable这里的方法。我怎么能调到MyIncrement这里的方法?显然这是不好区分的。而我们如果用内部类就很好解决这一问题了。看下面代码:
package com.edison;
 
public class Callee2 extends MyIncrement
{
 private int i=0;
 private void incr()
 {
       i++;
       System.out.println(i);
 }
 private class Closure implements Incrementable
 {
      public void increment()
      {
        incr();
      }
 }
 Incrementable getCallbackReference()
 {
      return new Closure();
 }
}

我们可以用内部类来实现接口,这样就不会与外围类的方法冲突了


    
[2] 一个简单的SimpleAdapter工具类-SimpleAdapterUtil
    来源: 互联网  发布时间: 2014-02-18
1个简单的SimpleAdapter工具类-SimpleAdapterUtil

1个简单的SimpleAdapter工具类-SimpleAdapterUtil

 

 

根据android.widget.SimpleAdapter来生成对应需要装备的适配器。

 

 

代码:

 

版本一:数据格式为List<Object[]>

 

package com.zhouzijing.android.util;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.content.Context;
import android.widget.SimpleAdapter;

public class SimpleAdapterUtil{
	
	/**
	 * 创建适配器并配置数据.
	 * @param context The context where the View associated with this SimpleAdapter is running
	 * @param item 需要绑定的数据
	 * @param resource resource Resource identifier of a view layout that defines the views for this list
	 *        item. The layout file should include at least those named views defined in "to"
	 * @param to The views that should display column in the "from" parameter. These should all be
	 *        TextViews. The first N views in this list are given the values of the first N columns
	 *        in the from parameter.
	 * @return
	 */
	public static SimpleAdapter create(Context context,List<Object[]> item, int resource,int[] to) {
		//定义适配器内容数据
    	List<Map<String,?>> data = new ArrayList<Map<String,?>>();
    	//获取要显示内容数量
    	int itemLength = item.get(0).length;
    	//获取要显示内容内部长度
    	int itemCount = item.size();
    	//定义适配器from参数
    	String[] adapterFroms = new String[itemCount];
    	for(int i=0;i<itemCount;i++){
    		adapterFroms[i]="Item"+String.valueOf(i);
    	}
    	//准备适配器内容
    	for(int i=0;i<itemLength;i++){
    		Map<String,Object> map = new HashMap<String,Object>();
    		for(int j=0;j<itemCount;j++){
    			map.put(adapterFroms[j], item.get(j)[i]);
    		}
    		data.add(map);
    	}
    	//绑定适配器并返回
    	SimpleAdapter simpleAdapter = new SimpleAdapter(context, data, resource, adapterFroms, to);
    	return simpleAdapter;
	}
}

 

版本二:数据格式为ArrayList<ArrayList<Object>>

 

package com.zhouzijing.android.util;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.content.Context;
import android.widget.SimpleAdapter;

public class SimpleAdapterUtil{
	
	/**
	 * 创建适配器并配置数据.
	 * @param context The context where the View associated with this SimpleAdapter is running
	 * @param item 需要绑定的数据
	 * @param resource resource Resource identifier of a view layout that defines the views for this list
	 *        item. The layout file should include at least those named views defined in "to"
	 * @param to The views that should display column in the "from" parameter. These should all be
	 *        TextViews. The first N views in this list are given the values of the first N columns
	 *        in the from parameter.
	 * @return
	 */
	public static SimpleAdapter create(Context context,ArrayList<ArrayList<Object>> item, int resource,int[] to) {
		//定义适配器内容数据
    	List<Map<String,?>> data = new ArrayList<Map<String,?>>();
    	//获取要显示内容数量
    	int itemLength = item.get(0).size();
    	//获取要显示内容内部长度
    	int itemCount = item.size();
    	//定义适配器from参数
    	String[] adapterFroms = new String[itemCount];
    	for(int i=0;i<itemCount;i++){
    		adapterFroms[i]="Item"+String.valueOf(i);
    	}
    	//准备适配器内容
    	for(int i=0;i<itemLength;i++){
    		Map<String,Object> map = new HashMap<String,Object>();
    		for(int j=0;j<itemCount;j++){
    			map.put(adapterFroms[j], item.get(j).get(i));
    		}
    		data.add(map);
    	}
    	//绑定适配器并返回
    	SimpleAdapter simpleAdapter = new SimpleAdapter(context, data, resource, adapterFroms, to);
    	return simpleAdapter;
	}
}

    
[3] [转]Java字符串变换为日期和时间比较大小
    来源: 互联网  发布时间: 2014-02-18
[转]Java字符串转换为日期和时间比较大小
方法一:

DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
String dateBegin=fmt.format(carrierCommand.getDateBegin());
String dateEnd=fmt.format(carrierCommand.getDateEnd());
//如果获得的日期格式不是'2008-05-22',就必须要格式化一下日期
String dateBegin = request.getParameter("dateBegin");
String dateEnd = request.getParameter("dateEnd");
if(java.sql.Date.valueOf(dateBegin).after(java.sql.Date.valueOf(dateEnd))){
//起始日期大于结束日期
errors.rejectValue("dateEnd", null, "起始日期必须小于结束日期!");
}
StringBuffer timeBegin = new StringBuffer();
StringBuffer timeEnd = new StringBuffer();
timeBegin.append(request.getParameter("timeBegin"));
timeEnd.append(request.getParameter("timeEnd"));
timeBegin.append(":00");
timeEnd.append(":00");
if(java.sql.Date.valueOf(dateBegin).equals(java.sql.Date.valueOf(dateEnd)))
{ //起始日期等于结束日期
if(java.sql.Time.valueOf(timeBegin.toString()).equals(java.sql.Time.valueOf
(timeEnd.toString())))//时间相同
{
errors.rejectValue("timeEnd", null, "起始与结束日期相同,起始时间必须小于结束时间!");
}
if(java.sql.Time.valueOf(timeBegin.toString()).after(java.sql.Time.valueOf
(timeEnd.toString())))//时间相同
{
errors.rejectValue("timeEnd", null, "起始与结束日期相同,起始时间必须小于结束时间!");
}
}

方法二:

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
*
* @author hp
*/
public class test {
public static void main(String args[]) {
int i= compare_date("1995-11-12 15:21", "1999-12-11 09:59");
System.out.println("i=="+i);
}
public static int compare_date(String DATE1, String DATE2) {
DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm");
try {
Date dt1 = df.parse(DATE1);
Date dt2 = df.parse(DATE2);
if (dt1.getTime() > dt2.getTime()) {
System.out.println("dt1 在dt2前");
return 1;
} else if (dt1.getTime() < dt2.getTime()) {
System.out.println("dt1在dt2后");
return -1;
} else {
return 0;
}
} catch (Exception exception) {
exception.printStackTrace();
}
return 0;
}
}

方法三:
比如:现在是2004-03-26 13:31:40
过去是:2004-01-02 11:30:24
我现在要获得两个日期差,差的形式为:XX天XX小时XX分XX秒
java计算时间差及比较时间大小
比如:现在是2004-03-26 13:31:40
过去是:2004-01-02 11:30:24
我现在要获得两个日期差,差的形式为:XX天XX小时XX分XX秒
一:

DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try
{
Date d1 = df.parse("2004-03-26 13:31:40");
Date d2 = df.parse("2004-01-02 11:30:24");
long diff = d1.getTime() - d2.getTime();
long days = diff / (1000 * 60 * 60 * 24);
}
catch (Exception e)
{
}

二:

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
java.util.Date now = df.parse("2004-03-26 13:31:40");
java.util.Date date=df.parse("2004-01-02 11:30:24");
long l=now.getTime()-date.getTime();
long day=l/(24*60*60*1000);
long hour=(l/(60*60*1000)-day*24);
long min=((l/(60*1000))-day*24*60-hour*60);
long s=(l/1000-day*24*60*60-hour*60*60-min*60);
System.out.println(""+day+"天"+hour+"小时"+min+"分"+s+"秒");

三:

SimpleDateFormat dfs = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
java.util.Date begin=dfs.parse("2004-01-02 11:30:24");
java.util.Date end = dfs.parse("2004-03-26 13:31:40");
long between=(end.getTime()-begin.getTime())/1000;//除以1000是为了转换成秒
long day1=between/(24*3600);
long hour1=between%(24*3600)/3600;
long minute1=between%3600/60;
long second1=between%60/60;
System.out.println(""+day1+"天"+hour1+"小时"+minute1+"分"+second1+"秒");

====================================================
java 比较时间大小

String s1="2008-01-25 09:12:09";
String s2="2008-01-29 09:12:11";
java.text.DateFormat df=new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
java.util.Calendar c1=java.util.Calendar.getInstance();
java.util.Calendar c2=java.util.Calendar.getInstance();
try
{
c1.setTime(df.parse(s1));
c2.setTime(df.parse(s2));
}catch(java.text.ParseException e){
System.err.println("格式不正确");
}
int result=c1.compareTo(c2);
if(result==0)
System.out.println("c1相等c2");
else if(result<0)
System.out.println("c1小于c2");
else
System.out.println("c1大于c2");


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3