`

android学习小结3

阅读更多

1 activity可以继承扩展 ListActivity
 比如:
class DummyNote extends ListActivity {
 private String[] note_array = {
      
            "gasolin",
            "crota",
            "louk",
            "magicion"
          
    };
  ListAdapter adapter = new ArrayAdapter<String>(this,
                    android.R.layout.simple_list_item_1,
                    note_array);
        setListAdapter(adapter);


}

2 使用sqlite
  在新建立工程后,打开模拟器后,在sdk的tools下
运行adb shell
cd data/data/
ls
 cd 工程名
mkdir databases
cd databases
sqlite3 notes.db (建立了一个notes.db数据库)
create talbe notes
......;
sqlite>.databases  (查看当前目录下的数据库列表)
sqllite>.tables  (查看所有数据表)
     .schema notes (查看指定表的结构)
离开sqllite:  .exit


3  CRUD的典型例子
 public class NotesDbAdapter {
 
 private static final String DATABASE_NAME = "notes.db";
    private static final int DATABASE_VERSION = 1;

    private static final String DATABASE_TABLE = "notes";

    private static final String DATABASE_CREATE =
    "create table notes("
        +"_id INTEGER PRIMARY KEY,"
        +"note TEXT,"
        +"created INTEGER,"
        +"modified INTEGER"
    +");";

 private static class DatabaseHelper extends SQLiteOpenHelper {

  public DatabaseHelper(Context context) {
   super(context, DATABASE_NAME, null, DATABASE_VERSION);
   // TODO Auto-generated constructor stub
  }

  @Override
  public void onCreate(SQLiteDatabase db) {
   // TODO Auto-generated method stub
   db.execSQL(DATABASE_CREATE);
  }

  @Override
  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
   // TODO Auto-generated method stub
   db.execSQL("DROP TABLE IF EXISTS "+DATABASE_TABLE);
   onCreate(db);
  }

    }
 
    private Context mCtx = null;
    private DatabaseHelper dbHelper ;
    private SQLiteDatabase db;

    /** Constructor */
    public NotesDbAdapter(Context ctx) {
        this.mCtx = ctx;
    }

    public NotesDbAdapter open () throws SQLException {
        dbHelper = new DatabaseHelper(mCtx);
        db = dbHelper.getWritableDatabase();
        return this;
    }

    public void close() {
        dbHelper.close();
    }

    //start query
    public static final String KEY_ROWID = "_id";
    public static final String KEY_NOTE = "note";
    public static final String KEY_CREATED = "created";

    String[] strCols = new String[] {
        KEY_ROWID,
        KEY_NOTE,
        KEY_CREATED
    };

    /*
    public Cursor getall() {
        return db.rawQuery("SELECT * FROM notes", null);
    }
    */
   
    /*
    // get all entries
    public Cursor getall() {
        return db.query(DATABASE_TABLE, //Which table to Select
             strCols,// Which columns to return
             null, // WHERE clause
             null, // WHERE arguments
             null, // GROUP BY clause
             null, // HAVING clause
             null //Order-by clause
             );
    }
    */
   
    // get all entries
    public Cursor getall() {
        return db.query(DATABASE_TABLE,
            new String[] {KEY_ROWID, KEY_NOTE, KEY_CREATED},
            null, null, null, null, null);
    }

    // add an entry
    public long create(String Note) {
        Date now = new Date();
        ContentValues args = new ContentValues();
        args.put(KEY_NOTE, Note);
        args.put(KEY_CREATED, now.getTime());

        return db.insert(DATABASE_TABLE, null, args);
    }

    //remove an entry
    public boolean delete(long rowId) {
        return db.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0;
    }
   
    //query single entry
    public Cursor get(long rowId) throws SQLException {
        Cursor mCursor = db.query(true,
                DATABASE_TABLE,
                new String[] {KEY_ROWID, KEY_NOTE, KEY_CREATED},
                KEY_ROWID + "=" + rowId,
                null, null, null, null, null);
        if (mCursor != null) {
            mCursor.moveToFirst();
        }
        return mCursor;
    }

    //update
    public boolean update(long rowId, String note) {
        ContentValues args = new ContentValues();
        args.put(KEY_NOTE, note);

        return db.update(DATABASE_TABLE, args, KEY_ROWID + "=" + rowId, null) > 0;
    }


}

主程序调用:
    private NotesDbAdapter mDbHelper;
    private Cursor mNotesCursor;
   
    private void setAdapter() {
     mDbHelper = new NotesDbAdapter(this);
        mDbHelper.open();
        fillData();

}
   private void fillData() {
        mNotesCursor = mDbHelper.getall();
        startManagingCursor(mNotesCursor);

        String[] from = new String[]{"note"};
        int[] to = new int[]{android.R.id.text1};

        // Now create a simple cursor adapter
        SimpleCursorAdapter adapter =
                    new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, mNotesCursor,

from, to);
        setListAdapter(adapter);
    }
   
新增记录:
   public long create(String Note) {
        Date now = new Date();
        ContentValues args = new ContentValues();
        args.put(KEY_NOTE, Note);
       。。。。。。

        return db.insert(DATABASE_TABLE, null, args);
    }
删除记录:
   public boolean delete(long rowId) {
        return db.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0;
    }
  mDbHelper.delete(getListView().getSelectedItemId());//这里用getListView().getSelectedItemId()获得选定

删除哪一条记录

查询记录:
//query single entry
    public Cursor get(long rowId) throws SQLException {
        Cursor mCursor = db.query(true,
                DATABASE_TABLE,
                new String[] {KEY_ROWID, KEY_NOTE, KEY_CREATED},
                KEY_ROWID + "=" + rowId,
                null, null, null, null, null);
        if (mCursor != null) {
            mCursor.moveToFirst();
        }
        return mCursor;
    }
更新记录:
 //update
    public boolean update(long rowId, String note) {
        ContentValues args = new ContentValues();
        args.put(KEY_NOTE, note);

        return db.update(DATABASE_TABLE, args, KEY_ROWID + "=" + rowId, null) > 0;
    }
4 activity中的相关,比如选了A中的记录,然后打开B来编辑,B编辑完后,再返回A。
   首先在B中,接收BUNDLE:
 private void showViews(Bundle savedInstanceState) {
        //mRowId = savedInstanceState != null ? savedInstanceState.getLong(NotesDbAdapter.KEY_ROWID) :

null;
        if (mRowId == null) {
            Bundle extras = getIntent().getExtras();
            mRowId = extras != null ? extras.getLong(NotesDbAdapter.KEY_ROWID) : null;
        }

 //把编辑的数据拿出来
  if (mRowId != null) {
            Cursor note = mDbHelper.get(mRowId);
            startManagingCursor(note);

            field_note.setText(note.getString(
                    note.getColumnIndexOrThrow(NotesDbAdapter.KEY_NOTE)
                ));
        }
  当编辑成功提交后,
     public void onClick(View view) {
                mDbHelper.update(mRowId, field_note.getText().toString());
                setResult(RESULT_OK);
                finish();
   这里的setResult,表示这个activity成功,返回

在调用方中,如果是一个LISTVIEW的列表的话,点某一个列
  protected void onListItemClick(ListView l, View v, int position, long id) {
     super.onListItemClick(l, v, position, id);
     Intent intent = new Intent(this, NoteEdit.class);
     intent.putExtra(NotesDbAdapter.KEY_ROWID, id);
     startActivityForResult(intent, ACTIVITY_EDIT);
 }
   这里的startActivityForResult表示的是要调用另外一个activity,并且要求结果返回
同时:
  protected void onActivityResult(int requestCode, int resultCode,
                                 Intent intent) {
     super.onActivityResult(requestCode, resultCode, intent);
     fillData();
 }

5 长按菜单
    A 在oncreate函数中,注册
     registerForContextMenu(getListView());//说明点listview时会使用长按菜单
   B public void onCreateContextMenu(ContextMenu menu, View v,
   ContextMenuInfo menuInfo) {
  // TODO Auto-generated method stub
  menu.add(0, MENU_DELETE, 0,  "删除记事");
        menu.setHeaderTitle("要怎么处理这个项目");
  super.onCreateContextMenu(menu, v, menuInfo);
 }

2
0
分享到:
评论

相关推荐

    Android实习总结

    android实习日记总结,面很窄,以前做的练习项目的实用性也不是很好。让我知道了一个人的知识和能力只有在实践中才能发挥作用,才能得到丰富、完善和发展。大学生成长,就要勤于实践,将所学的理论知识与实践相结合一起...

    Android知识系统总结+最佳学习线路图+实例+全程开发笔记

    Android知识系统总结+最佳学习线路图+实例+全程开发笔记Android知识系统总结+最佳学习线路图+实例+全程开发笔记

    Android知识系统总结

    其次,Android学习笔记可能是对Android SDK、API级别的详细解析,或者是特定主题的深入探讨,比如Activity生命周期、Intent机制、权限管理、动画效果、布局优化等。这些笔记有助于巩固理论知识,并提供快速查找和...

    ANDROID STUDIO 个人学习笔记

    3. Android Manifest文件配置 - 关于`android:supportsRtl="true"`属性的使用,这表示应用程序支持从右到左(RTL)布局,有助于应用在多语言环境中正确显示。 4. DialogFragment与宿主Fragment通信 - 探讨如何在...

    开发android总结文档

    【Android 开发总结】 在 Android 开发中,个人经验总结主要涵盖了项目构建、MVP 架构模式、MD5.0 设计规范、Lambda 表达式以及网络请求框架的选择和使用。首先,创建 Android 项目时,通常会设置最大堆内存大小,...

    android开发笔记总结

    ### Android开发笔记总结 #### 学习基础 在深入探讨Android开发之前,我们先回顾一下基础知识,这是构建高质量Android应用程序的基石。 - **Java基础知识**:Android应用开发主要基于Java语言,因此熟悉Java是...

    Android页面布局总结

    ### Android页面布局详解 在Android开发中,布局是构建用户界面的基础。良好的布局不仅能够提升应用的美观度,还能提高用户体验。本文将详细介绍Android中三种常见的布局方式:LinearLayout(线性布局)、...

    Android自学笔记

    【Android自学笔记】 Android 应用开发是移动设备软件开发的重要领域,主要针对谷歌的Android操作系统。本笔记将概述Android应用开发的基础知识,包括环境搭建、应用构成、apk解析、Activity管理和生命周期等。 ...

    学习Android总结

    ### 学习Android总结 #### 一、初步接触与学习路径 在初步接触Android时,首先感受到的是其独特的魅力和实用性。与Web开发相比,Android界面设计不仅具有丰富的视觉效果,而且在架构上也十分相似,这使得具备一定...

    Android技术总结

    Android 技术总结 在深入探讨 Android 技术之前,我们先回顾一下“Hello, World!”这个经典案例,它是每个编程新手入门时的第一个程序。在 Android 中,创建一个简单的 HelloWorld 应用同样简单,但涉及到了一些...

    Android动画学习总结Demo

    在Android开发中,动画是提升用户体验的关键因素,它能让应用变得更加生动有趣。本文将深入探讨Android动画中的`AnimationSet`和`RotateAnimation`类,帮助开发者掌握这些基本用法。 一、AnimationSet:动画组合 `...

    Android动画学习总结---下

    这篇"Android动画学习总结---下"着重探讨了Android属性动画(Property Animation)的使用方法。属性动画系统是Android 3.0(API Level 11)引入的新特性,与视图动画(View Animation)相比,它提供了更为强大的动画...

    android framework 经验总结

    这篇“Android Framework经验总结”将深入探讨这一关键领域的核心概念、主要组件以及常见开发实践。 1. **Android架构概述**: Android系统分为四个主要层次:Linux内核、系统库、Android运行时(ART)以及应用...

    Android开发学习总结

    Android开发学习总结

    Android菜单定制总结

    在Android应用开发中,菜单(Menu)是用户界面不可或缺的一部分,它通常用于提供应用程序的主要操作选项。本篇文章将深入探讨如何在Android中自定义菜单,包括菜单的设计、创建、显示以及与用户交互的方式。我们将从...

    android嵌入式系统学习总结.docx

    android嵌入式系统学习总结.docx

Global site tag (gtag.js) - Google Analytics