Android 应用 日程助手 summary

这篇博客总结了作者在Android开发中的学习心得,通过开发日程助手应用,掌握了Activity生命周期、Intent传值、基本控件使用和SQLite数据库操作等基础知识。文中提到,对于有JAVA基础的开发者,学习Android开发相对容易,主要需要理解Android的结构和模式。并展示了部分MainActivity.java的数据库操作代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

从上一篇刚开始学习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;
 }
}

以上是部分代码!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值