类:MainActivity主类 ItemsAdapter适配器类 Item实体类 计算时间差的ShiJianCha类
标题栏用title_bar单独的布局文件<include>到activity_main布局中。
MainActivity主类:
package bzu.edu.hnz;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Random;
import bzu.edu.hnz.R;
import bzu.edu.hnz.adapter.ItemsAdapter;
import bzu.edu.hnz.adapter.Items;
import bzu.edu.hnz.view.SinaListView;
import android.R.integer;
import android.os.Bundle;
import android.os.Message;
import android.app.Activity;
import android.content.res.TypedArray;
import android.view.Menu;
import android.view.Window;
import android.widget.ArrayAdapter;
import android.widget.LinearLayout;
public class MainActivity extends Activity {
private SinaListView myListView=null;
private List<Items> list_item=null;
private ItemsAdapter adapter=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
if(list_item==null){
getData();
}
adapter=new ItemsAdapter(this,list_item);
myListView.setAdapter(adapter);
}
private void getData() {
String names[];
String msg[];
TypedArray head_view;
int i;
names=getResources().getStringArray(R.array.name);
msg=getResources().getStringArray(R.array.msg);
head_view=getResources().obtainTypedArray(R.array.head_view);
list_item=new ArrayList<Items>();
for(i=0;i<names.length;i++){
Items items=new Items();
items.setHead_view(head_view.getDrawable(i));
items.setName(names[i]);
items.setMsg(msg[i]);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
long diff=0,days=0,hours=0,minutes=0;
String times=null;
try {
Date d1 = sdf.parse("2015-05-07 12:00:00");
Date d2 = new Date(System.currentTimeMillis());
ShiJianCha sjc=new ShiJianCha();
times=sjc.twoDateDistance(d1, d2);
}catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
items.setTime(times);
list_item.add(items);
}
}
private void init() {
// TODO Auto-generated method stub
myListView=(SinaListView)findViewById(R.id.myListView1);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
ItemsAdapter适配器类:
package bzu.edu.hnz.adapter;
import java.util.List;
import bzu.edu.hnz.R;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
public class ItemsAdapter extends BaseAdapter {
private List<Items> list_item=null;
private Context context;
public ItemsAdapter(Context context,List<Items> list_mes) {
// TODO Auto-generated constructor stub
this.list_item=list_mes;
this.context=context;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return list_item.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return list_item.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
ListItem listitem;
if(convertView==null)
{
convertView=(LinearLayout)LayoutInflater.from(context).inflate(R.layout.list_layout, null);
listitem=new ListItem();
listitem.head_view=(ImageView)convertView.findViewById(R.id.head_view);
listitem.name=(TextView)convertView.findViewById(R.id.name);
listitem.time=(TextView)convertView.findViewById(R.id.time);
listitem.msg=(TextView)convertView.findViewById(R.id.msg);
convertView.setTag(listitem);
}else {
listitem=(ListItem)convertView.getTag();
}
listitem.head_view.setImageDrawable(list_item.get(position).getHead_view());
listitem.name.setText(list_item.get(position).getName());
listitem.time.setText(list_item.get(position).getTime());
listitem.msg.setText(list_item.get(position).getMsg());
return convertView;
}
public class ListItem{
ImageView head_view;
TextView name;
TextView time;
TextView msg;
}
}
ShiJianCha类:
package bzu.edu.hnz;
import java.text.ParseException;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
public class ShiJianCha {
public String twoDateDistance(Date startDate,Date endDate){
if(startDate == null ||endDate == null){
return null; }
long timeLong = endDate.getTime() - startDate.getTime();
if (timeLong<60*1000)
return timeLong/1000 + "秒前";
else if (timeLong<60*60*1000){
timeLong = timeLong/1000 /60;
return timeLong + "分钟前";
}
else if (timeLong<60*60*24*1000){
timeLong = timeLong/60/60/1000;
return timeLong+"小时前";
}
else if (timeLong<60*60*24*1000*7){
timeLong = timeLong/1000/ 60 / 60 / 24;
return timeLong + "天前";
}
else if (timeLong<60*60*24*1000*7*4){
timeLong = timeLong/1000/ 60 / 60 / 24/7;
return timeLong + "周前";
}
else {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss ");
sdf.setTimeZone(TimeZone.getTimeZone("GMT+08:00"));
return sdf.format(startDate);
}
}
}