combobox 怎么实现对listview的类别查询_Android之ListView实现本地存储,实现恋爱日记的效果...

感叹离春节将至,也同时感叹时间不等人,一年又一年,可是我依然是android道路上的小菜鸟,这篇讲的是时间轴的实现,说实话,其实就是listview的偷梁换柱,本来我会在写listview这个系列的时候写的,但是最近自己写的一个项目《Only》上用到了,很多群友说也想看看怎么实现的,独乐乐不如众乐乐,所以就提前先来分享,说说listview,这可是一个名角,在android上很受欢迎,也很实用,当然本篇不会详细讲解listview,只是说怎么用listview实现时间轴的效果,无奈listview我也正在学习当中,而且新出的RecyclerView更是如艺术般的华丽,都要去学习,只能感叹"书山有路勤为径,学海无涯苦作舟",我们,我们就不瞎BB了,直接进入正题吧

还是老话,无图无真相

4c8798c8491cb8059142a7e33c6ce8d3.gif

实现

1.新建项目TimeLineDemo

2.下载GSON

我们做本地存储需要,当然,你也可以从其他渠道下载

初始版本2008年5月22日

最新版本(稳定版本)2.2.4/2013年5月13日;2个月前

编程语言Java

操作平台各种平台

许可协议Apache License 2.0

官方网站http://code.google.com/p/google-gson/

下载地址http://code.google.com/p/google-gson/downloads/list

GSON帮助文档:

http://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/index.html

3.Adapter

ListView需要一个adapter,我们就定义一个TimeLineAdapter

package com.lgl.timelinedemo;

import java.util.List;

import java.util.Map;

import android.content.Context;

import android.graphics.Color;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseAdapter;

import android.widget.TextView;

public class TimelineAdapter extends BaseAdapter {

private Context context;

private List> list;

private LayoutInflater inflater;

public TimelineAdapter(Context context, List> list) {

super();

this.context = context;

this.list = list;

}

@Override

public int getCount() {

return list.size();

}

@Override

public Object getItem(int position) {

return position;

}

@Override

public long getItemId(int position) {

return position;

}

@Override

public View getView(int position, View convertView, ViewGroup parent) {

ViewHolder viewHolder;

if (convertView == null) {

inflater = LayoutInflater.from(context);

convertView = inflater.inflate(R.layout.item, null);

viewHolder = new ViewHolder();

viewHolder.day = (TextView) convertView.findViewById(R.id.day);

viewHolder.time = (TextView) convertView.findViewById(R.id.time);

viewHolder.content = (TextView) convertView

.findViewById(R.id.content);

convertView.setTag(viewHolder);

} else {

viewHolder = (ViewHolder) convertView.getTag();

}

String day = list.get(position).get("day").toString();

String time = list.get(position).get("time").toString();

String content = list.get(position).get("content").toString();

if (day != "") {

viewHolder.day.setBackgroundColor(Color.WHITE);

}

if (time == null) {

time = "#";

}

if (content == null) {

content = "#";

}

viewHolder.day.setText(day);

viewHolder.day.setBackgroundResource(R.drawable.timeline_year);

viewHolder.time.setText(time);

viewHolder.day.setText(day);

viewHolder.time.setText(time);

viewHolder.content.setText(content);

return convertView;

}

static class ViewHolder {

public TextView day;

public TextView time;

public TextView content;

}

}

4.item.xml

adapter需要一个item,也就是时间轴偷梁换柱的根本

9971c25874c336abcf88aa0c5bb94b22.png

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="#ffffff"

android:orientation="vertical"

android:paddingRight="20dp" >

android:id="@+id/view_1"

android:layout_width="2dp"

android:layout_height="15dp"

android:layout_marginLeft="30dp"

android:background="#E9F01D" />

android:id="@+id/show_time"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_below="@+id/view_1"

android:layout_marginLeft="30dp"

android:text=""

android:textSize="12dp" />

android:id="@+id/image"

android:layout_width="15dp"

android:layout_height="15dp"

android:layout_below="@+id/view_1"

android:layout_marginLeft="24dp"

android:src="@drawable/timeline_red" />

android:id="@+id/view_2"

android:layout_width="2dp"

android:layout_height="45dp"

android:layout_below="@+id/image"

android:layout_marginLeft="30dp"

android:background="#E9F01D" />

android:id="@+id/relative"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_below="@+id/image"

android:layout_marginLeft="5dp"

android:layout_marginTop="-20dp"

android:layout_toRightOf="@+id/image"

android:background="@drawable/timeline_content_blue"

android:padding="5dp" >

android:id="@+id/time"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:paddingLeft="5dp"

android:text="03:22"

android:textSize="14sp" />

android:id="@+id/content"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginLeft="3dp"

android:layout_toRightOf="@id/time"

android:text="内容,写点啥好尼?

android:textSize="14sp" />

android:textColor="#fff"

android:layout_marginLeft="15dp"

android:id="@+id/day"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignBottom="@+id/view_2"

android:layout_marginTop="-2dp"

android:gravity="center"

android:text="01月13日"

android:textSize="8sp" />

android:id="@+id/view_5"

android:layout_width="2dp"

android:layout_height="10dp"

android:layout_alignLeft="@+id/view_2"

android:layout_below="@+id/day"

android:background="#E9F01D" />

5.activity_main.xml

然后我们就可以来写主布局,为了方便,我就直接添加一个EditText和一个Button做添加处理了

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical" >

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:id="@+id/et"

/>

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="add"

android:id="@+id/add"

/>

android:id="@+id/listview"

android:layout_width="fill_parent"

android:layout_height="wrap_content"/>

6.MainActivity

好了,最后一步,我们就来编写这个ListView了

package com.lgl.timelinedemo;

import java.text.SimpleDateFormat;

import java.util.ArrayList;

import java.util.Collections;

import java.util.Date;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import android.app.Activity;

import android.content.Context;

import android.content.SharedPreferences;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.EditText;

import android.widget.ListView;

import com.google.gson.Gson;

import com.google.gson.reflect.TypeToken;

public class MainActivity extends Activity {

// 声明一个listview

private ListView listView;

// listview的adapter

private TimelineAdapter timelineAdapter;

// 数据集

private List> list;

private EditText et;

private Button add;

// 键值对

private Map map;

private String cacheName = "cache";

private Gson gson = new Gson();

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

// 获取SharedPreferences

SharedPreferences sp = getSharedPreferences("config

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值