从上一篇刚开始学习Android开发的日志Android从环境搭建到第一个HelloWorld . 2012-08-27 08:05(分类:Andriod开发随笔) 到这篇 开发的第一个应用的 总结日志,相隔时间不长,收获颇多。
个人觉得:
学习Andriod开发对于JAVA开发者而言,就像是 已经学会说了,再学习唱歌。之所以这么比喻 是因为,两者有相同点;既没有语言障碍。(当然JAVA是要求有一定基础的)
Andriod虽然是基于Linux的,但JAVA设计之初就是为跨平台而生。java开发者学习Andriod,尤其是从事过J2EE的开发者,所需要学习的只是Android的结构及模式而已。
下面分析下 日程助手 这个应用。
先上图:
主要技术点:
Activity生命周期;intent传值;基本控件使用;SQLite数据库使用;View布局
都是Android开发基础。也是为了熟悉Android开发过程。
Android的多值选择性空间都需要注册 适配器Adapter(具体件代码)
代码实现:
数据库操作:
package com.zq.db;
import java.util.Vector;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
public class LoadUtil {
public static SQLiteDatabase createOrOpenDatabase()// 连接数据库
{
SQLiteDatabase sld = null;
try {
sld = SQLiteDatabase.openDatabase// 连接并创建数据库,如果不存在则创建
("/data/data/com.zq.log/log_db", null,
SQLiteDatabase.OPEN_READWRITE
| SQLiteDatabase.CREATE_IF_NECESSARY);
} catch (Exception e) {
e.printStackTrace();
}
return sld;// 返回该连接
}
public static void createTable(String sql) {// 创建表
SQLiteDatabase sld = createOrOpenDatabase();// 连接数据库
try {
sld.execSQL(sql);// 执行SQL语句
sld.close();// 关闭连接
} catch (Exception e) {
}
}
public static boolean insert(String sql)// 插入数据
{
SQLiteDatabase sld = createOrOpenDatabase();// 连接数据库
try {
sld.execSQL(sql);
sld.close();
return true;
} catch (Exception e) {
return false;
}
}
public static boolean delete(String title, String date) {
SQLiteDatabase sld = createOrOpenDatabase();// 连接数据库
String sql = "delete from schedule where Ttitle = '" + title
+ "'AND Tdate='" + date + "'";
try {
sld.execSQL(sql);
sld.close();
return true;
} catch (Exception e) {
return false;
}
}
public static String query(String title, String date) {
String sql = "select * from schedule where Ttitle = '" + title
+ "'AND Tdate='" + date + "'";
Vector<Vector<String>> result = query(sql);
// String title = result.get(0).get(1);
String type = result.get(0).get(2);
String content = result.get(0).get(3);
// String date = result.get(0).get(4);
String time = result.get(0).get(5);
return title + "/" + type + "/" + content + "/" + date + "/" + time;
}
public static Vector<Vector<String>> query(String sql)// 查询
{
Vector<Vector<String>> vector = new Vector<Vector<String>>();// 新建存放查询结果的向量
SQLiteDatabase sld = createOrOpenDatabase();// 得到连接数据库的连接
try {
Cursor cur = sld.rawQuery(sql, new String[] {});// 得到结果集
while (cur.moveToNext())// 如果存在下一条
{
Vector<String> v = new Vector<String>();
int col = cur.getColumnCount(); // 将其放入向量
for (int i = 0; i < col; i++) {
v.add(cur.getString(i));
}
vector.add(v);
}
cur.close();// 关闭结果集
sld.close();// 关闭连接
} catch (Exception e) {
e.printStackTrace();
}
return vector;
}
}
MainActivity.java
MainAcivity.java
package com.zq.log;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Vector;
import com.zq.db.LoadUtil;
import com.zq.db.CreatTable;
import android.os.Bundle;
import android.app.AlertDialog;
import android.app.ListActivity;
import android.content.DialogInterface;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
public class MainActivity extends ListActivity {
public static ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();
private SimpleAdapter listAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
CreatTable.creattable();// 建表
if (list.isEmpty()) {
iniTLisit();// 初始化数组
}
listAdapter = new SimpleAdapter(this, list, R.layout.mylist,
new String[] { "title", "date" }, new int[] { R.id.my_title,
R.id.my_date });
setListAdapter(listAdapter);
Button add = (Button) findViewById(R.id.add);
Button query = (Button) findViewById(R.id.query);
Button back = (Button) findViewById(R.id.back);
add.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(MainActivity.this, AddActivity.class);
startActivity(intent);
finish();
}
});
query.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(MainActivity.this, QueryActivity.class);
startActivity(intent);
finish();
}
});
back.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
String date = list.get(position).get("date");
String title = list.get(position).get("title");
Dailog(title, date, position).show();
}
public void iniTLisit()// 初始化适配器中需要的数据的函数
{
String sql = "select * from schedule";
Vector<Vector<String>> temp = LoadUtil.query(sql);
for (int i = 0; i < temp.size(); i++) {
HashMap<String, String> map = new HashMap<String, String>();
map.put("title", temp.get(i).get(1));
map.put("date", temp.get(i).get(4));
list.add(map);
}
}
public AlertDialog Dailog(final String title, final String date,
final int position) {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("提示")
.setIcon(R.drawable.ic_launcher)
.setCancelable(false)
// 不响应back按钮
.setMessage("请选择执行操作!")
.setPositiveButton("查看", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String schedule = LoadUtil.query(title, date);
ScheduleDailog(schedule).show();
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
})
.setNeutralButton("删除", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
LoadUtil.delete(title, date);
list.remove(position);
listAdapter.notifyDataSetChanged();
Toast.makeText(MainActivity.this, "删除成功!",
Toast.LENGTH_SHORT).show();
}
});
// 对话框显示内容
// 创建Dialog对象
AlertDialog dlg = builder.create();
return dlg;
}
public AlertDialog ScheduleDailog(String schedule) {
String[] str = schedule.split("/");
String title = str[0];
String type = str[1];
String content = str[2];
String date = str[3];
String time = str[4];
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("日程")
.setIcon(R.drawable.ic_launcher)
.setCancelable(false)
// 不响应back按钮
.setMessage(
"标题:" + title + "\t\t类型:" + type + "\n内容:\n\t"
+ content + "\n\n时间:\n\t" + date + "\t\t"
+ time)
.setNeutralButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
// 对话框显示内容
// 创建Dialog对象
AlertDialog dlg = builder.create();
return dlg;
}
}
以上是部分代码!