Tìm kiếm tài liệu miễn phí

Hướng dẫn lập trình cơ bản với Android - Phần 22: Tạo và sử dụng một Content Provider

Tài liệu cung cấp cho người học các kiến thức: Tạo và sử dụng một Content Provider, chỉnh sửa code, giao diện chương trình, tạo tệp dữ liệu,... Hi vọng đây sẽ là một tài liệu hữu ích dành cho các bạn sinh viên đang theo học môn dùng làm tài liệu học tập và nghiên cứu. Mời các bạn cùng tham khảo chi tiết nội dung tài liệu.



Đánh giá tài liệu

0 Bạn chưa đánh giá, hãy đánh giá cho tài liệu này


  • 5 - Rất hữu ích 0

  • 4 - Tốt 0

  • 3 - Trung bình 0

  • 2 - Tạm chấp nhận 0

  • 1 - Không hữu ích 0

Mô tả

2. Tạo và sử dụng 1 Content Provider do người dùng tự định nghĩa Để dễ hiểu hơn các bạn mở Project ContentProviderDemo trong Sourcecode đã down về. Trong Project đó mình tạo 1 Content Provider Books, mỗi bản ghi Book bao gồm 2 trường : ID và Title. Sau đây là các bước để tạo 1 Content Provider cơ bản ( cụ thể là tạo ContentProvider Book) 1. Tạo 1 class thừa kế lớp ContentProvider Mã: public class BookProvider extends ContentProvider 2. Định nghĩa 1 biến Uri (public static final ) được gọi CONTENT_URI. Các xâu này luôn được bắt đầu bằng “content://” tiếp theo đó là nội dung của mà ContentProvider xử lý. Xâu này phải có đặc tính là duy nhất. Mã: public static final String PROVIDER_NAME = "com.vietandroid.provider.Books"; public static final Uri CONTENT_URI = Uri.parse("content://" + PROVIDER_NAME + "/books"); 3. Khai báo các xâu để định nghĩa cho từng thuộc tính tương ứng với các cột giá trị từ Cursor. Mã: public static final String _ID = "_id"; public static final String TITLE = "title"; 4. Chúng ta cần tạo hệ thống chứa dữ liệu cho ContentProvider, có thể chưa dưới nhiều hình thức : sử dụng XML, thông qua CSDL SQLite, hay thậm chí là WebService. Trong Demo này chúng ta sử dụng cách phổ biến nhất đó là SQLite: Mã: private private "Books"; private "titles"; private SQLiteDatabase bookDB; static final String DATABASE_NAME = static final String DATABASE_TABLE = static final int DATABASE_VERSION = 1; 5. Định nghĩa tên của các cột mà chúng ta sẽ trả lại giá trị cho các clients.Nếu chúng ta đang sử dụng Database ContentProvider hay các lớp SQLiteOpenHelper, tên các cột này chính là id của các cột trong cơ sở dữ liệu SQL. Trong trường hợp này, chúng ta phải gộp cả cột có giá trị là số nguyên được gọi “_id” để định nghĩa id của mỗi bản ghi. Nếu đang sử dụng cơ sở dữ liệu SQLite, nó sẽ là INTEGER PRIMARY KEY AUTOINCREMENT. Tùy chọn AUTOINCREMENT không bắt buộc, có tác dụng tự động tăng ID của mỗi bản ghi lên nếu người dùng không nhập. Android cung cấp SQLiteOpenHelper giúp tạo và quản lý các phiên bản của cơ sở dữ liệu. Mã: private static final String DATABASE_CREATE = "create table " + DATABASE_TABLE + " (_id integer primary key autoincrement, " + "title text not null);"; private static class DatabaseHelper extends SQLiteOpenHelper { public DatabaseHelper(Context context) { super(context, DATABASE_NAME , null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(DATABASE_CREATE); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS titles"); onCreate(db); } } 6. Nếu chúng ta muốn public các dữ liệu kiểu byte như bitmap thì các trường mà chứa dữ liệu này nên là một xâu với 1 content://URI cho file đó. Đây chính là liên kết để các ứng dụng khác có thể truy cập và sử dụng dữ liệu bitmap này. 7. Sử dụng Cursor để thao tác trên tập dữ liệu : query (), update(), insert(), delete()….. Có thể gọi phương thức ContentResolver.notifyChange() để biếtkhi nào dữ liệu được cập nhật. Add Book Mã: @Override public Uri insert(Uri uri, ContentValues values) { long rowID = bookDB.insert(DATABASE_TABLE, "", values); if(rowID > 0) { Uri mUri = ContentUris.withAppendedId(CONTENT_URI, rowID); getContext().getContentResolver().notifyChange(mUr i, null); return mUri; } throw new SQLException("Failed to insert new row into " + uri); } Get All Books Mã: @Override public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { SQLiteQueryBuilder sqlBuilder = new SQLiteQueryBuilder(); sqlBuilder.setTables(DATABASE_TABLE); if(uriMatcher.match(uri) == BOOK_ID) sqlBuilder.appendWhere(_ID + "=" + uri.getPathSegments().get(1)); if(sortOrder == null || sortOrder == "") sortOrder = TITLE; Cursor c = sqlBuilder.query(bookDB, projection, selection, selectionArgs, null, null, sortOrder); c.setNotificationUri(getContext().getContentResolv er(), uri); return c; } } Mình chỉ demo 2 chức năng là thêm sách và lấy toàn bộ bản ghi trong CSDL , ngoài ra các phương thức edit, sửa , update, xóa... các bạn có thể tự làm . 8. Khai báo Content Provider trong file AndroidManifest.xml Mã: Như vậy chúng ta đã tạo xong ContentProvider Book tự định nghĩa.

Tài liệu cùng danh mục Kỹ thuật lập trình

GAMES FOR THE PLAYGROUND, HOME, SCHOOL AND GYMNASIUM

This book aims to be a practical guide for the player of games, whether child or adult, and for the teacher or leader of games. A wide variety of conditions have been considered, including schools, playgrounds, gymnasiums, .boys' and girls' summer camps, adult house parties and country clubs, settlement work, children's parties, and the environment of indoors or out of doors, city or country, summer or winter, the seashore, the woodland, or the snow. The games have been collected from many countries and sources, with a view to securing novel and interesting as well as thoroughly tried and popular material,...


Lập trình Java cơ bản : OOP trong Java part 6

Đa hình (Polymorphism) • Tính đa hình thể hiện qua việc: cùng một phương thức nhưng có nội dung thực hiện khác nhau trên các đối tượng khác nhau. • Phương thức gọi được xác định thông qua đối tượng được tham chiếu, không thông qua kiểu khai báo của tham chiếu. • Trong Java, các phương thức luôn mang tính đa hình.


Publishing PHP eclipse - part 21

Trong khi các plug-in thư mục vào Eclipse-Workbench.com có thể không được toàn diện như các trang web trước đó, nó là một bộ sưu tập lớn. Hơn nữa, Eclipse-Workbench.com chủ một thư viện các câu hỏi thường gặp và các sản phẩm liên quan đến Eclipse và các plug-in kiến trúc.


Setting Up LAMP Getting Linux, Apache, MySQL, and PHP Working Together phần 4

Điều này sẽ tạo ra một tarball chứa các tập tin chỉ mới hơn so với sao lưu đầy đủ cuối cùng (vào ngày Chủ nhật) là sao lưu gia tăng của bạn. Tiếp theo, bạn sẽ sử dụng các lệnh tương tự như kịch bản sao lưu đầy đủ để xóa bất kỳ tập tin cũ, nhưng thời gian này bạn muốn xóa các tập tin chỉ gia tăng lớn tuổi hơn một tuần. Vì vậy, sử dụng lệnh sau đây:


C++ và lập trình hướng đối tượng_chương 1

Trong chương này trình bầy các vấn đề sau: - Cách sử dụng phần mềm TC++ 3.0 - Những sửa đổi cần thiết một chương trình C để biến nó thành một chương trình C++ (chạy được trong môi trường C++) - Tóm lược về các phương pháp lập trình cấu trúc và lập trình hướng đối tượng - Những mở rộng của C++ so với C § 1. Làm việc với TC++ 3.0 Các ví dụ trong cuốn sách này sẽ viết và thực hiện trên môi trường TC++ 3.0. Bộ cài đặt TC++ 3.0 gồm 5 đĩa. ......


Sequence Diagrams - Software Design Methodology

 Sequence Diagrams - Software Design Methodology provides about introduction, basic notation, alternating paths, modularity (referencing a diagram,  parallel fragments, critical fragment) behavior Modeling, language, lternations and some thing else. 


The Complete Idiot's Guide to Javascript

The Complete Idiot's Guide to Javascript The Complete Idiot's Guide to JavaScript 2nd Edition- Online Version By Aaron Weiss The complete book is online here! Explore the book by using the Table of C


Programming the iPhone User Experience phần 5

Một loại quan trọng của ứng dụng Cocoa Touch là ứng dụng nhập vai. Bạn có thể nghĩ rằng các trò chơi 2D và 3D, gia tốc các ứng dụng kiểm soát, người chơi phim và máy ảnh như nhập vai các ứng dụng. Nói chung, một


Setting Up LAMP Getting Linux, Apache, MySQL, and PHP Working Together phần 9

Mặc định: 0 Được phép: 0, số nguyên mặc định là 0, mà nói với các cookie hết hạn sau khi trình duyệt được đóng lại. Một số nguyên được sử dụng ở đây sẽ cho cookie hết hạn trong số giây được cung cấp.Mặc định: php phép: hợp lệ xử lý này cho phép bạn chỉ định một xử lý tùy chỉnh để serialize dữ liệu.


Version Control with Subversion phần 1

Ở bài viết dưới, tác giả có hướng dẫn cách tạo server(bước số 1) trên máy mình(tạo kho lưu trữ project), nhưng khổ cái là nếu máy đó trở thành server SVN(create repository) thì bắt buộc phải online 24/7 để mọi người trong mọi thời điểm đều cập nhật được!


Tài liệu mới download

Từ khóa được quan tâm

Có thể bạn quan tâm

jQuery Tools UI Library
  • 03/01/2013
  • 94.179
  • 836
Secure PHP Development- P47
  • 08/12/2010
  • 20.995
  • 557

Bộ sưu tập

Danh mục tài liệu