Chức năng đăng nhập hệ thống:

Một phần của tài liệu ĐỒ ÁN LẬP TRÌNH DI ĐỘNG ANDROID (Trang 36 - 45)

IV. Mô tả chức năng:

6. Chức năng đăng nhập hệ thống:

a. Giao diện:

b. Mô tả chức năng:

Chức năng này dùng để xác nhận người dùng khi vào chương trình.

c. Cách thức thực hiện:

Danh sách các control:

Tên Loại Công dụng

txtUsername EditText Dùng để người dùng nhập tên tài khoản đăng nhập txtPassword EditText Dùng để người dùng nhập mật khẩu đăng nhập btnExit Button Thoát khỏi chương trình

btnLogin Button Đăng nhập vào chương trình

Danh sách xử lý:

Username Password

ĐĂNG NHẬP ĐÓNG

Tên Công dụng - Cách thiết kế

btnExit_Click Xứ lý đóng màn hình hiện tại.

btnLogin_Click Xử lý kiểm tra thông tin tài khoản và cho vào màn hình hiển thị lịch công việc theo tháng nếu tài khoản tồn tại trong CSDL

Liên hệ đến phần đã được học:

- Xử lý kết nối lấy CSDL và kiểm tra. - Xử lý sự kiện đóng, mở Activity. - Xử lý sự kiện đóng chương trình.

1. Xem nội dung công việc của một ngày:

a. Thiết kế Layout chính: Layout được tạo trực tiếp bằng java code và có cấu

trúc như sau:

LinearLayout linear;

TextView text1; // Chứa tiêu đề ngày tháng đang chọn

TextView text2; // Chứa thông tin lấy mỗi item từ CSDL không hiển thị lên màn hình

ListView list; // Chứa danh sách các thông tin công việc theo ngày đang hiển thị

b. Thiết kế Layout cho Item của ListView (item_congviec): tạo ra bằng

ngôn ngữ xml <?xml version="1.0" encoding="UTF-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/txtString" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="DataHere" />

c. Viết Code xử lý CSDL: (DBAdapter.java)

package www.google.com; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.util.Log;

public class DBAdapter {

public static final String TAG ="DBAdapter"; public static final String KEY_ID = "_id";

public static final String KEY_DATE = "date";

public static final String KEY_FROM_TIME = "from_time"; public static final String KEY_TO_TIME = "to_time"; public static final String KEY_CONTENT = "contents"; public static final String KEY_AUTHOR = "author"; private DatabaseHelper mDbHelper;

private SQLiteDatabase mDB;

private static final String DATABASE_CREATE = "create table works (_id integer primary key autoincrement, "

+ "date text not null," + "from_time text not null," + "to_time text not null," + "contents text not null," + "author text not null);";

private static final String DATABASE_NAME = "Database_WorkScheduled"; private static final String DATABASE_TABLE = "works";

private static final int DATABASE_VERSION = 2; private final Context mContext;

private static class DatabaseHelper extends SQLiteOpenHelper{ public DatabaseHelper(Context context, String name,

CursorFactory factory, int version) { super(context, name, factory, 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

Log.i(TAG, "Upgrading DB");

db.execSQL("DROP TABLE IF EXISTS works"); onCreate(db); } } public DBAdapter(Context ctx){ this.mContext = ctx; }

public DBAdapter open() {

mDbHelper = new DatabaseHelper(mContext, DATABASE_NAME, null, DATABASE_VERSION);

mDB = mDbHelper.getWritableDatabase(); return this;

}

public void close(){

mDbHelper.close(); }

public long createWork(String date, String from_time, String to_time, String content, String author){ ContentValues inititalValues = new ContentValues();

inititalValues.put(KEY_DATE, date);

inititalValues.put(KEY_FROM_TIME, from_time); inititalValues.put(KEY_TO_TIME, to_time); inititalValues.put(KEY_CONTENT, content); inititalValues.put(KEY_AUTHOR, author);

return mDB.insert(DATABASE_TABLE, null, inititalValues); }

public long updateWork(long id, String date, String from_time, String to_time, String content, String author){

ContentValues inititalValues = new ContentValues(); inititalValues.put(KEY_DATE, date);

inititalValues.put(KEY_FROM_TIME, from_time); inititalValues.put(KEY_TO_TIME, to_time); inititalValues.put(KEY_CONTENT, content); inititalValues.put(KEY_AUTHOR, author);

return mDB.update(DATABASE_TABLE, inititalValues, "_id=" + id, null); }

public boolean deleteWork(long rowId) {

return mDB.delete(DATABASE_TABLE, KEY_ID + "=" + rowId, null) >0; }

public boolean deleteAll() {

return mDB.delete(DATABASE_TABLE, null , null) >0; }

public Cursor getAllUsers(){

return mDB.query(DATABASE_TABLE, new String[] {KEY_ID, KEY_DATE, KEY_FROM_TIME, KEY_TO_TIME, KEY_CONTENT, KEY_AUTHOR}, null, null, null, null, null);

}

public Cursor select(int _id){

return mDB.rawQuery("SELECT * FROM works WHERE _id=" + _id, null); }

}

d. Code xử lý chuyển dữ liệu vào ListView (có lưu ID vào Tag để xử lý) d1. item_congviec.java

package www.google.com; import android.widget.TextView; public class item_congviec {

private TextView txtString;

public item_congviec(TextView txtString) {

this.txtString = txtString; }

public TextView getContent() {

return txtString; } } d2. item_congviec_group.java package www.google.com; import android.content.Context; import android.view.LayoutInflater; import android.widget.LinearLayout; import android.widget.TextView;

public class item_congviec_group extends LinearLayout {

public TextView txtString;

public item_congviec_group(Context context) {

super(context);

LayoutInflater li = (LayoutInflater)

this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); li.inflate(R.layout.item_congviec, this, true);

txtString = (TextView) findViewById(R.id.txtString); } } d3. item_congviec_adapter package www.google.com; import java.util.ArrayList; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.TextView; import android.widget.Toast;

public class item_congviec_adapter extends ArrayAdapter<item_congviec> { ArrayList<item_congviec> array; int resource; Context context; item_congviec_edit item_congviec; //

public item_congviec_adapter(Context context, int textViewResourceId, ArrayList<item_congviec> objects)

{

super(context, textViewResourceId, objects); this.context = context; resource = textViewResourceId; array = objects; } // @Override

public View getView(int position, View convertView, ViewGroup parent) {

if (v_item_congviec == null) {

v_item_congviec = new item_congviec_group(getContext()); }

final item_congviec mCongViec = array.get(position); if (mCongViec != null)

{

TextView txtString = ((item_congviec_group) v_item_congviec).txtString; /* // KHÔNG ĐƯỢC XÓA HÀM SAU ĐÂY

txtString.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {

//Toast.makeText(v.getContext(), v.getTag().toString() , Toast.LENGTH_LONG).show();

try {

Intent myIntent = new Intent(v.getContext(), item_congviec_edit.class);

// KHAI BÁO BIẾN TRUYỀN DỮ LIỆU QUA FORM KHÁC Bundle bundle = new Bundle();

bundle.putString("_id",v.getTag().toString()); myIntent.putExtras(bundle);

v.getContext().startActivity(myIntent); }

catch (Exception ex) { Toast.makeText(getContext(), ex.toString(), Toast.LENGTH_LONG).show(); } } }); */ txtString.setText(mCongViec.getContent().getText()); txtString.setTag(mCongViec.getContent().getTag()); } return v_item_congviec; } }

e. Viết Code khởi động Activity: (dynamic_activity.java)

package www.google.com; import java.util.ArrayList; import android.app.Activity; import android.content.Intent; import android.database.Cursor; import android.os.Bundle; import android.view.Gravity; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener;

import android.widget.LinearLayout; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast;

public class dynamic_activity extends Activity {

private static final int CONST_EXIT = Menu.FIRST; private static final int CONST_ADD = Menu.FIRST + 1; LinearLayout linear;

TextView text1; TextView text2; item_congviec item1; ListView list;

// KHAI BÁO BIẾN TRUYỀN DỮ LIỆU CHO item_congviec ArrayList<item_congviec> array;

item_congviec_adapter arrayAdapter;

// KHAI BÁO BIẾN SỬ DỤNG CHO DATABASE private DBAdapter mDB;

private Cursor mCursor;

@Override

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // mDB = new DBAdapter(this); mDB.open(); try { //mDB.deleteAll(); }

catch (Exception ex) {

//Toast.makeText(this, ex.toString(), Toast.LENGTH_LONG).show(); }

//mDB.createWork("22/11/2012", "21:20", "22:30", "ĐI CHƠI TRUNG THU", "HIỀN");

mCursor = mDB.getAllUsers(); mCursor.moveToFirst();

linear = new LinearLayout(this);

linear.setOrientation(LinearLayout.VERTICAL); int _ID = 0; int _DATE = 1; int _FROM_TIME = 2; int _TO_TIME = 3; int _CONTENT = 4; int _AUTHOR = 5; mCursor.moveToFirst();

//if (i==3) mCursor.moveToNext(); text1 = new TextView(this);

text1.setText("Thứ 2 - 01.01.2012!"); text1.setGravity(Gravity.RIGHT);

//

array = new ArrayList<item_congviec>();

arrayAdapter = new item_congviec_adapter(this,R.layout.item_congviec, array); while(!mCursor.isAfterLast())

{

text2 = new TextView(this);

text2.setTag(mCursor.getString(_ID).toString()); text2.setText( mCursor.getString(_DATE).toString() + " - " + mCursor.getString(_FROM_TIME).toString() + " :" + mCursor.getString(_TO_TIME).toString() + " - " + mCursor.getString(_CONTENT).toString() + " - (" + mCursor.getString(_AUTHOR).toString() + ")" );

item1 = new item_congviec(text2); array.add(item1);

//

mCursor.moveToNext();

//if (mCursor.isAfterLast()) break; //mCursor.moveToNext(); }

list = new ListView(this); list.setAdapter(arrayAdapter); //

list.setOnItemClickListener( new OnItemClickListener(){

public void onItemClick(AdapterView<?> adapter, View v, int position, long arg3) {

// TODO Auto-generated method stub try

{

Intent myIntent = new Intent(v.getContext(), item_congviec_edit.class);

// KHAI BÁO BIẾN TRUYỀN DỮ LIỆU QUA FORM KHÁC Bundle bundle = new Bundle();

bundle.putString("_id",

((item_congviec)list.getItemAtPosition(position)).getContent().getTag().toString()); myIntent.putExtras(bundle);

v.getContext().startActivity(myIntent); }

catch (Exception ex) { Toast.makeText(v.getContext(), ((item_congviec)list.getItemAtPosition(position)).getContent().getText().toString() , Toast.LENGTH_LONG).show(); } } }); linear.addView(text1); linear.addView(list); setContentView(linear); }

//Tạo Option Menu

public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu);

menu.add(0, CONST_EXIT,

0,"THOÁT" ).setIcon(android.R.drawable.ic_menu_close_clear_cancel);

menu.add(0, CONST_ADD, 0,"THÊM" ).setIcon(android.R.drawable.ic_menu_add) ; return true;

//Xử lý sự kiện khi các option trong Option Menu được lựa chọn public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case CONST_EXIT: { // finish(); System.exit(0); break; } case CONST_ADD: {

Intent myIntent = new Intent(this, item_congviec_edit.class); // KHAI BÁO BIẾN TRUYỀN DỮ LIỆU QUA FORM KHÁC

Bundle bundle = new Bundle(); bundle.putString("_id", "add"); myIntent.putExtras(bundle); this.startActivity(myIntent); break; } } return true; } }

Một phần của tài liệu ĐỒ ÁN LẬP TRÌNH DI ĐỘNG ANDROID (Trang 36 - 45)