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

SharePoint 2007 User’s Guide Learning Microsoft’s Collaboration and Productivity Platform phần 2

trong danh sách trang của không gian làm việc. Để điều hướng đến các trang này, chỉ cần nhấp vào tên trang trong danh sách trang. Với các trang được xử lý theo cách này, nó là phổ biến hơn cho các trang bổ sung được sử dụng trong cuộc họp không gian làm việc hơn trong các trang web trong nhóm


Giáo trình hướng dẫn các trợ giúp về cú pháp trong quá trình viết mã lệnh khai báo biến trong VB p7

Input: đọc dữ liệu từ tập tin, để không gây lỗi thì tập tin này phải có sẵn trên đĩa. Output: ghi dữ liệu vào tập tin với hai điểm cần lưu ý: Nếu tập tin là có sẵn thì toàn bộ dữ liệu bên trong nó sẽ bị xóa sạch trước khi dữ liệu mới được ghi vào (ghi đè lên những dữ liệu đã có). Việc này sẽ làm mất đi những dữ liệu ban đầu. Nếu tập tin chưa tồn tại, một tập tin mới sẽ được tạo ra với tên và vị trí của...


Executing Multiple SQL Statements

Executing Multiple SQL Statements Typically, your C# program and the database will run on different computers and communicate over a network. Each time you execute a command in your program


Integration of Functions part 3

We will not here consider the problem of interpolating on a mesh that is not Cartesian, i.e., has tabulated function values at “random” points in n-dimensional space rather than at the vertices of a rectangular array. For clarity, we will consider explicitly only the case of two dimensions, the cases of three or more dimensions being analogous in every way. In two dimensions, we imagine that we are given a matrix of functional values ya[1..m][1..n]. We are also given an array x1a[1..m], and an array x2a[1..n]. The relation of these input quantities to an underlying function y(x1 , x2 )...


Microsoft Forefront TMG – Best Practice Analyzer 2010

Quản trị mạng – Forefront Threat Management Gateway 2010 cho phép các nhân viên trong công ty có thể sử dụng Internet an toàn và hiệu quả mà không cần lo lắng đến các vấn đề malware cũng như các mối đe dọa khác. Trong bài này chúng tôi sẽ hướng dẫn cho các bạn về cách cài đặt và sử dụng Forefront TMG Best Practice Analyzer (TMGBPA). Giới thiệu Trong bài này chúng tôi sẽ hướng dẫn cho các bạn về cách cài đặt và sử dụng Forefront TMG Best Practice Analyzer (TMGBPA). Bạn có thể sử dụng...


Chương 1 PHƯƠNG PHÁP GIẢI QUYẾT BÀI TOÁN BẰNG MÁY TÍNH SỐ

Tham khảo bài thuyết trình 'chương 1 phương pháp giải quyết bài toán bằng máy tính số', công nghệ thông tin, kỹ thuật lập trình phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả


Lecture Software testing and quality assurance: Lecture 3 - TS. Đào Nam Anh

Lecture "Software testing and quality assurance - Lecture 3: Standard for software test documentation" trình bày các nội dung: Qui trình, standard for software test documentation, test plan, test-case specification, test-summary report, test-summary report, test-schedule,... Mời các bạn cùng tham khảo.


Professional Softs Links part 66

Tham khảo tài liệu 'professional softs links part 66', công nghệ thông tin, kỹ thuật lập trình phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả


Giáo Trình How To Use AutoIt A Professional Manner part 18

Tham khảo tài liệu 'giáo trình how to use autoit a professional manner part 18', công nghệ thông tin, kỹ thuật lập trình phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả


ASP Configuration Handbook phần 6

bạn sẽ có thể làm cho một số giả định về các nguồn doanh thu tiềm năng ngắn hạn của nhiều loại khác nhau hoặc các ứng dụng. Như các loại tiềm năng và các ứng dụng xuất hiện, nó là rất quan trọng để tích lũy thông tin về các cơ hội ngắn hạn và dài hạn cho việc cung cấp đó.


Tài liệu mới download

Quyết định số: 623/ĐVN/KTNĐ
  • 04/03/2016
  • 88.541
  • 901

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

Có thể bạn quan tâm

Phát triển ứng dụng phần 1
  • 22/07/2010
  • 69.880
  • 494
IT - Matlab Software part 2
  • 18/01/2011
  • 82.841
  • 614

Bộ sưu tập

Danh mục tài liệu