1. Trang chủ
  2. » Công Nghệ Thông Tin

Lập trình android phần 2

235 314 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 235
Dung lượng 6,31 MB

Nội dung

Bài tập 16: Kết hợp Spinner với ListView trong AndroidBài tập 17: Thực hành về AutocompleteTextView và MultiAutocompleteTextViewBài tập 18: Cập nhật DataSource cho AutocompleteTextView lúc RuntimeBài tập 19: Thực hành Gridview trong AndroidBài tập 20: Thực hành về DatePickerDialog và TimePickerDialog trong AndroidBài tập 21: Thực hành về Tab Selector trong AndroidBài tập 22: Thực hành về Menu trong AndroidBài tập 23: Thực hành về Context Menu trong AndroidBài tập 24: Thực hành về Intent trong AndroidBài tập 25: Tiếp tục củng cố kiến thức Intent, ví dụ tổng hợp Quản Lý Nhân ViênBài tập 26: Dùng Implicit Intent để viết chương trình gọi điện thoại và nhắn tin SMSBài tập 27: Đa ngôn ngữ trong AndroidBài tập 28: Xử lý tập tin trong AndroidBài tập 29: XML Parser trong AndroidBài tập 30: Thực hành về Shared Preferences

Lập trình Android-phần Bài tập 16: Kết hợp Spinner với ListView Android Bài tập 17: Thực hành AutocompleteTextView MultiAutocompleteTextView Bài tập 18: Cập nhật DataSource cho AutocompleteTextView lúc Runtime Bài tập 19: Thực hành Gridview Android Bài tập 20: Thực hành DatePickerDialog TimePickerDialog Android Bài tập 21: Thực hành Tab Selector Android Bài tập 22: Thực hành Menu Android Bài tập 23: Thực hành Context Menu Android Bài tập 24: Thực hành Intent Android Bài tập 25: Tiếp tục củng cố kiến thức Intent, ví dụ tổng hợp Quản Lý Nhân Viên Bài tập 26: Dùng Implicit Intent để viết chương trình gọi điện thoại nhắn tin SMS Bài tập 27: Đa ngôn ngữ Android Bài tập 28: Xử lý tập tin Android Bài tập 29: XML Parser Android Bài tập 30: Thực hành Shared Preferences Bài tập 16: Kết hợp Spinner với ListView Android Ở tập 15 bạn làm quen với Spinner, tập bạn làm ví dụ cách kết hợp Spinner với ListView Thường control với tạo thành cặp trùng, Spinner dùng để lưu trữ danh mục ListView lưu trữ danh sách danh mục Ở Tôi có làm ví dụ quản lý sản phẩm, bạn xem hình: – Bạn quan sát hình Tôi chụp ứng dụng, phần Danh mục sản phẩm lưu vào Spinner, Khi bạn chọn vào xổ danh sách bên bạn chọn danh mục load sản phẩm thuộc danh mục – Ví dụ bạn chọn số SamSung, load toàn sản phẩm SamSung vào ListView bên dưới: – Nếu bạn chọn 2- Iphone load toàn sản phẩm IPhone vào ListView bên dưới: – Chương trình cung cấp nút “Nhập SP“, người sử dụng nhập thông tin cho sản phẩm nhấn nút chương trình lưu sản phẩm vào với danh mục chọn Spinner đồng thời cập nhật vào ListView bên – Bạn cần có ArrayList + ArrayAdapter cho Spinner – Và cần có ArrayList + ArrayAdapter cho ListView -> Tức bạn phải có cặp (4 đối tượng trên) – Ví dụ Tôi viết hướng đối tượng, có phá cách chút so với quy tắc hướng đối tượng thông thường, lớp Sản phẩm Tôi cho phép tham chiếu trực tiếp tới đối tượng Danh mục chứa Như đứng danh mục lấy toàn danh sách sản phẩm nó, đứng sản phẩm biết thuộc danh mục – Bạn xem cấu trúc chương trình: – Ở bạn thấy có class: Goods, Product, Catalog: Product Catalog kế thừa từ Goods, Goods có Id Name Sản phẩm danh mục phải có Id Name nên kế thừa từ Goods hợp lý – Bạn xem mô hình lớp: -Bạn xem cấu trúc XML cho phần giao diện (activity_main.xml): 10 11 12 13 14 15 16 17 18 19 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 – Tương tự tập trước, phải đặt id cho control Bài tập bạn tự nhìn vào để xem Tôi đặt Id nào, Tôi không nhắc lại – Chúng ta xem nội dung coding class phần xử lý nghiệp vụ: – 1) Class Goods: 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 package tranduythanh.com; /** * Class class cha Product Catalog * Product Catalog có Id Name * nên Tôi tạo class để sử dụng lại code * @author drthanh * */ public class Goods { //Id để lưu mã //Name để lưu tên private String id; private String name; public String getid() { return id; } public void setid(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Goods(String id, String name) { super(); this.id = id; this.name = name; } public Goods() { super(); } public String toString() { return this.id+" - "+this.name; } } – – class Product: package tranduythanh.com; /** * Class để lưu thông tin sản phẩm * kế thừ từ Goods để lấy mã tên * Tôi cho tham chiếu tới Catalog * để biết thuộc danh mục * @author drthanh * */ public class Product extends Goods{ 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 //Lấy tham chiếu để lập trình cho lẹ private Catalog Dmuc; public Catalog getDmuc() { return Dmuc; } public void setDmuc(Catalog dmuc) { Dmuc = dmuc; } public Product(String ma, String name, Catalog dmuc) { super(ma, name); Dmuc = dmuc; } public Product(String ma, String name) { super(ma, name); } public Product() { super(); } } – – class Catalog: 10 11 12 13 14 15 16 17 18 19 20 21 package tranduythanh.com; import java.util.ArrayList; /** * Class dùng để lưu trữ thông tin danh mục * danh sách sản phẩm thuộc danh mục * @author drthanh * */ public class Catalog extends Goods { private ArrayListlistSp=null; public Catalog(String ma, String name) { super(ma, name); this.listSp=new ArrayList(); } public Catalog() { super(); this.listSp=new ArrayList(); } /** * kiểm tra sản phẩm tồn danh mục hay chưa * @param p * @return true tồn */ 10 Bước 4: – Lưu trạng thái cách gọi dòng lệnh: editor.commit(); —————————————————————————————————— ——————– Sau bạn làm bước chương trình lưu trạng thái, nói mặc định phần mở rộng xml (tức trạng thái lưu định dạng tập tin XML) Bên ta đặt tên my_data có nghĩa chương trình tạo tập tin my_data.xml (bạn mở DDMS lên để xem) – tự động lưu vào thư mục shared_prefs hình bên dưới: —————————————————————————————————— ——————– -B- Cách đọc trạng thái lưu: 221 Rất đơn giản Bước 1: – Gọi hàm getSharedPreferences để trả đối tượng SharedPreferences (giống phần lưu trạng thái mà Tôi nói trên) SharedPreferences pre=getSharedPreferences (“my_data“,MODE_PRIVATE); Bước 2: – Gọi phương thức getXXX(“key”,giá trị mặc định) để lấy giá trị lúc trước lưu boolean bchk=pre.getBoolean(“checked”, false); //đối số Tôi để false giá trị mặc định tìm không thấy key =checked String user=pre.getString(“user”, “”);//lấy giá trị lưu key=user, không thấy gán giá trị mặc định chuỗi rỗng String pwd=pre.getString(“pwd”, “”);//giống —————————————————————————————————— ——————– ******** Gợi ý ******* – Lưu đọc trạng thái bạn nên viết thành hàm riêng biệt cho dễ sử dụng – Hàm lưu bạn gọi kiện onPause – Hàm đọc bạn gọi kiện onResume – Đừng hỏi sao???? bị điểm lý Tôi giải thích rõ tập 5và tập Bạn tự xem lại ******** END ******* Tôi làm ví dụ cụ thể để bạn hiểu rõ lý thuyết: 222 Ví dụ 1: bạn muốn tạo hình đăng nhập có checkbox cho phép lưu lại thông tin đăng nhập, lần sau khởi đội lại lấy lại thông tin nhập lúc trước để người sử dụng đỡ phải công nhập lại (biết Shared Preferences), xem hình họa: – Khi chọn nút đăng nhập, chương trình đóng Activity hiển thị Activity đây: – Chọn nút Thoát, chương trình tiếp tục đóng Activity giúp tắt hẳn Activity ứng dụng – Khởi động lại chương trình phải tự động load lại thông tin đăng nhập trước (Nếu đăng nhập có chọn “Lưu thông tin“) – Bạn xem cấu trúc Project: 223 – Layout XML hình (activity_main.xml): 10 11 12 13 14 15 16 17 18 19 20 – Layout XML activity_dang_nhap_thanh_cong.xml: 10 11 12 13 14 15 16 17 18 19 20 21 22 226 23 – Bạn xem Source code MainActivity.java: 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 package tranduythanh.com; import import import import import import import import import android.os.Bundle; android.app.Activity; android.content.Intent; android.content.SharedPreferences; android.view.Menu; android.view.View; android.widget.Button; android.widget.CheckBox; android.widget.EditText; public class MainActivity extends Activity { Button btnlogin; EditText edituser,editpassword; CheckBox chksaveaccount; //đặt tên cho tập tin lưu trạng thái String prefname="my_data"; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btnlogin=(Button) findViewById(R.id.btnlogin); edituser =(EditText) findViewById(R.id.editUser); editpassword=(EditText) findViewById(R.id.editPassword); chksaveaccount=(CheckBox) findViewById(R.id.chksaveacount); btnlogin.setOnClickListener( new View.OnClickListener() { public void onClick(View arg0) { doLogin(); } }); } /** * hàm đăng nhập hệ thống */ public void doLogin() { finish();//đóng hình Intent i=new Intent(this, DangNhapThanhCongActivity.class); //truyền liệu qua hình i.putExtra("user", edituser.getText().toString()); startActivity(i);//mở hình } @Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); //gọi hàm lưu trạng thái savingPreferences(); } @Override protected void onResume() { // TODO Auto-generated method stub 227 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 super.onResume(); //gọi hàm đọc trạng thái restoringPreferences(); } /** * hàm lưu trạng thái */ public void savingPreferences() { //tạo đối tượng getSharedPreferences SharedPreferences pre=getSharedPreferences (prefname, MODE_PRIVATE); //tạo đối tượng Editor để lưu thay đổi SharedPreferences.Editor editor=pre.edit(); String user=edituser.getText().toString(); String pwd=editpassword.getText().toString(); boolean bchk=chksaveaccount.isChecked(); if(!bchk) { //xóa lưu trữ trước editor.clear(); } else { //lưu vào editor editor.putString("user", user); editor.putString("pwd", pwd); editor.putBoolean("checked", bchk); } //chấp nhận lưu xuống file editor.commit(); } /** * hàm đọc trạng thái lưu trước */ public void restoringPreferences() { SharedPreferences pre=getSharedPreferences (prefname,MODE_PRIVATE); //lấy giá trị checked ra, không thấy giá trị mặc định false boolean bchk=pre.getBoolean("checked", false); if(bchk) { //lấy user, pwd, không thấy giá trị mặc định rỗng String user=pre.getString("user", ""); String pwd=pre.getString("pwd", ""); edituser.setText(user); editpassword.setText(pwd); } chksaveaccount.setChecked(bchk); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present getMenuInflater().inflate(R.menu.activity_main, menu); return true; } } 228 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 – Bạn xem source code DangNhapThanhCongActivity.java: 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 package tranduythanh.com; import import import import import import import import android.os.Bundle; android.app.Activity; android.content.Intent; android.view.Menu; android.view.View; android.view.View.OnClickListener; android.widget.Button; android.widget.TextView; public class DangNhapThanhCongActivity extends Activity { TextView txtMsg; Button btnThoat; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_dang_nhap_thanh_cong); txtMsg=(TextView) findViewById(R.id.txtmsg); btnThoat=(Button) findViewById(R.id.btnThoat); btnThoat.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub finish(); } }); Intent i=getIntent(); txtMsg.setText("Hello : "+i.getStringExtra("user")); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present 229 33 34 35 36 37 38 39 40 41 42 getMenuInflater().inflate(R.menu.activity_dang_nhap_thanh_cong, menu); return true; } } – Như xong, bạn biết cách lưu trạng thái Chú ý lưu trạng thái lưu Primitive Data, không cho phép lưu Object Serialize – Bạn click vào để tải coding mẫu: http://www.mediafire.com/download/4e4lyykdukgof82/LearnSharedPreference s.rar —————————————————————————————————— ——————– -B- cách tạo Shared Preference Change Listeners để tạo giao diện cấu hình: Bước 1: – Tạo Project Android bất kỳ, sau tạo thêm layout PreferenceScreen: 230 – đặt tên tùy ý (ở Tôi đặt tên mypreferencelayout) – Không giống layout bình thường, preference screen nằm thư mục xml hình bên dưới: 231 – Tiến hành tạo Checkbox giống (nó có nhiều control khác, tùy vào nhu cầu) Bước 2: – Tạo Activity cho Prefence layout (Kế thừa từ PreferenceActivity): Bước 3: – Cấu hình Manifest XML cho Preference Activity trên: 232 Bước 4: – Tiến hành sửa MainActivity để sử dụng Preference Activity (Đăng ký OnSharePreferenceChangeListener): – Bạn xem kết bên dưới: 233 —————————————————————————————————— ——————– Ví dụ 2: – Bạn cố gắng tự xem lại lý thuyết đọc coding để hiểu Ví dụ Tôi không giải thích coding – Hay bạn cần tạo hình để cấu hình (giống hình Setting thiết bị chẳng hạn – cần biết Shared Preference Change Listeners): 234 – Bạn tải source code đây: http://www.mediafire.com/download/lg8881lz8jrp1np/Ex_Module3_Bai5.rar 235 ... import android. os.Bundle; import android. app.Activity; 11 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54...

Ngày đăng: 08/08/2017, 20:02

TỪ KHÓA LIÊN QUAN

w