zoukankan      html  css  js  c++  java
  • 记事本1

    1)下载代码

    先下载代码,解压。

    http://androidappdocs.appspot.com/resources/tutorials/notepad/codelab/NotepadCodeLab.zip

     

    2)把代码导入工程

    File > New > Android Project

    选择  Create project from existing source

    点击Browse 找到Notepadv1

    选择sdk版本。

    打开可以看到src下有一个NotesDbAdapter。这个类是操作SQLite数据库的封装类。

     

    3)修改notepad_list

    打开res\layout\notepad_list.xml

    <?xml version="1.0" encoding="utf-8"?>

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

          android:layout_width="wrap_content"

        android:layout_height="wrap_content">

    </LinearLayout>

     

     

    添加代码。

    <?xml version="1.0" encoding="utf-8"?>

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

          android:layout_width="wrap_content"

        android:layout_height="wrap_content">

        <ListView android:id="@android:id/list"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"/>

        <TextView android:id="@android:id/empty"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:text="@string/no_notes"/>

    </LinearLayout>

     

    ID list  empty 是由Android平台提供,所以前面要加命名空间android

    ListAdapter 不能为ListView提供数据的时候。Empty为自动被使用。当然我们可以用setEmptyView(View)ListView设置为空。

    ListAdapterListView和数据的桥梁,通常来自光标)

     

    4)关于notes_row

    打开 res/layout/notes_row.xml 

    每个记事本的标题文本。

    <?xml version="1.0" encoding="UTF-8"?>

    <TextView android:id="@+id/text1"

        xmlns:android="http://schemas.android.com/apk/res/android"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"/>

     

    5)打开Notepadv1

    打开src/com/android/demo/notepad1/Notepadv1.java

    package com.android.demo.notepad1;

     

    import android.app.Activity;

    import android.os.Bundle;

    import android.view.Menu;

    import android.view.MenuItem;

     

    public class Notepadv1 extends {

        private int mNoteNumber = 1;

       

        /** Called when the activity is first created. */

        @Override

        public void onCreate(Bundle savedInstanceState) {

            super.onCreate(savedInstanceState);

        }

     

        @Override

        public boolean onCreateOptionsMenu(Menu menu) {

            // TODO Auto-generated method stub

            return super.onCreateOptionsMenu(menu);

        }

     

        @Override

        public boolean onOptionsItemSelected(MenuItem item) {

            // TODO Auto-generated method stub

            return super.onOptionsItemSelected(item);

        }

    }

    类修改成 ListActivity, ListActivity也是从Activity继承过来的。但是提供了一些额外的功能。更加适合对list进行操作。

     

    6)onCreate添加代码

    先定义一个NotesDbAdapter成员。

    private mDbHelper;

     

    onCreate添加代码。生成一个NotesDbAdapter实例。

    并调用open方法。

        @Override

        public void onCreate(Bundle savedInstanceState)

        {

            super.onCreate(savedInstanceState);

            setContentView(R.layout.notepad_list);

            mDbHelper = new NotesDbAdapter(this);

            mDbHelper.open();

            fillData();

    }

     

    7) 关于fillData方法

    可以看到fillData(), 这个是我们自己定义的从数据库取数据并填充到notes_row一个方法。

        private void fillData()

        {

         Cursor c = mDbHelper.fetchAllNotes();

         ;

         

         String[] from = new String[] {KEY_TITLE };

         int [] to = new int[]{R.id.text1};

         

         SimpleCursorAdapter notes = new SimpleCursorAdapter(this, R.layout.notes_row, c, from, to);

         setListAdapter(notes);

        }

    startManagingCursor(c)方法可以把光标的生命周期交给Android去管理。

    定义一个String数组from,存放我们将显示的数据库某表里的一个列名。(这里只一个即:NotesDbAdapter.KEY_TITLE

    定义一个int数组to,存放我们将显示from数组里列内容的视图id.(如果有多个,他们将一一对应)

    我们将用SimpleCursorAdapter类把数据从from映射到to

     

    8)在字符串资源增加一个字符串

    在字符串资源((under res/values/strings.xml )增加,一个字符串

    <string name="menu_insert">Add Item</string>

     

    9)onCreateOptionsMenu添加代码

    Notepadv1类定义一个菜单id.

    public static final int INSERT_ID = Menu.FIRST;

     

    onCreateOptionsMenu添加代码。

        @Override

        public boolean onCreateOptionsMenu(Menu menu)

        {

         boolean result = super.onCreateOptionsMenu(menu);

         menu.add(0, INSERT_ID, 0, R.string.menu_insert);

            // TODO Auto-generated method stub

            return result;

        }

    初始化菜单项,并添加一个项。

     

    10)onOptionsItemSelected添加代码

        @Override

        public boolean onOptionsItemSelected(MenuItem item)

        {

            // TODO Auto-generated method stub

         switch(item.getItemId())

         {

         case INSERT_ID:

             createNote();

             return true;

         }

            return super.onOptionsItemSelected(item);

        }

    处理菜单项事件。

    在这里只有一个菜单项要处理即:INSERT_ID,当用户点击的时候,就调用createNote();创建一个记事本。

     

    11)关于createNote方法

    下面看看我们自己写的方法createNote

        private void createNote()

        {

             String noteName = "Note " + mNoteNumber++;

             mDbHelper.createNote(noteName, "");

            fillData();

        }

    它使用NotesDbAdaptercreateNote方法创建一个记事本

     

    按一下ctrl-shift-O 确保所有包都import进来了

     

    下面可以按F11跑一下我们的程序了。

    效果图如下:

     

    http://www.cnblogs.com/fangyukuan/archive/2010/04/05/1704806.html

  • 相关阅读:
    一些不能订阅的前端学习资源
    酷站收集
    网页设计学习资源
    flash 内置类的位置
    打造自己的CodeSnippet (转)
    (转)打造自己的CodeSnippet
    WebApplication编程模型与WebSite编程模型
    (转).net面试问答(大汇总)
    ASP.NET 防盗链源码 (转)
    正则表达式基础知识
  • 原文地址:https://www.cnblogs.com/fangyukuan/p/1704806.html
Copyright © 2011-2022 走看看