Hướng dẫn lập trình cơ bản với Android phần 12

B9: Việc cuối cùng cần làm là viết lại Activity. Tới Example.java và chỉnh sửa theo nội dung sau:

Mã:

package at.exam;

import java.util.ArrayList;

import android.app.Activity;

import android.app.AlertDialog;

import android.content.DialogInterface;

import android.os.Bundle;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.ArrayAdapter;

import android.widget.Button;

import android.widget.EditText;

import android.widget.ListView;

public class Example extends Activity {

//Các hằng dùng cho tạo Option Menu

private static final int DELETE_WORK = Menu.FIRST;

private static final int ABOUT = Menu.FIRST + 2;

ArrayList<Work> array;

ListWorkAdapter arrayAdapter; @Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

array = new ArrayList<Work>();

arrayAdapter = new ListWorkAdapter(this,

R.layout.list, array);

final EditText workEnter = (EditText) findViewById(R.id.work_enter);

final EditText hourEdit = (EditText) findViewById(R.id.hour_edit);

final EditText minuteEdit = (EditText) findViewById(R.id.minute_edit);

final Button button = (Button) findViewById(R.id.button);

//Tạo list view cho danh sách công việc final ListView list = (ListView)

findViewById(R.id.list);

list.setAdapter(arrayAdapter);

OnClickListener add = new OnClickListener() {

@Override

public void onClick(View v) {

          if(workEnter.getText().toString().equals("") || hourEdit.getText().toString().equals("") || minuteEdit.getText().toString().equals("")) {

          AlertDialog.Builder builder = new AlertDialog.Builder(Example.this); builder.setTitle("Info missing"); builder.setMessage("Please enter all information of the work");

          builder.setPositiveButton("Continue", new DialogInterface.OnClickListener() {

          public void onClick(DialogInterface dialog, int which) {

                    // TODO Auto-generated method stub

          }});

          builder.show();

}

else {

         String workContent = workEnter.getText().toString();

         String timeContent = hourEdit.getText().toString() + ":"+minuteEdit.getText().toString();

          Work work = new Work(workContent,timeContent);

          array.add(0, work);

          arrayAdapter.notifyDataSetChanged();

          workEnter.setText("");

         hourEdit.setText(""); minuteEdit.setText("");

}}};

button.setOnClickListener(add);

}

//Tạo Option Menu

public boolean onCreateOptionsMenu(Menu menu) {

super.onCreateOptionsMenu(menu);

menu.add(0, DELETE_WORK, 0,"Delete").setIcon(android.R.drawable.ic_delete); menu.add(0, ABOUT, 0,"About").setIcon(android.R.drawable.ic_menu_info_details); 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 DELETE_WORK: { deleteCheckedWork(); break;

}

case ABOUT: {

AlertDialog.Builder builder = new AlertDialog.Builder(this);

builder.setTitle("VietAndroid"); builder.setMessage("AUTHOR:" + "\n" + " Nguyen Anh Tuan" + "\n" + "SOURCE:" + "\n" + " diendan.vietandroid.com");

builder.setPositiveButton("Close", new DialogInterface.OnClickListener() {

          public void onClick(DialogInterface dialog, int which) {

          }

});

          builder.setIcon(android.R.drawable.ic_dialog_info); builder.show();

         break;

}}

return true;

}

private void deleteCheckedWork() {

if (array.size() > 0) {

for (int i = 0; i < array.size(); i++) {

          if (i > array.size()) {

                break;

                     }

if (array.get(i).isChecked()) {

          array.remove(i);

          arrayAdapter.notifyDataSetChanged();

                    continue;

}

}}}}

OK. Vậy là xong. Option Menu là menu ẩn chỉ hiện ra khi bạn nhấn nút Menu của điện thoại. Option Menu rất tiện trong việc đưa ra các tùy chỉnh, giống như khi bạn nhấn phím Esc khi đang chơi game trên PC vậy.

Các bạn có thể lưu ý là thay vì sử dụng ArrayList<String> như trước mình đã thay bằng ArrayList<Work> và trong khởi tạo đối tượng arrayAdapter thì đối số thứ 2 là R.layout.list thay vì android.R.layout.simple_list_item_1, nghĩa là chúng ta đã sử dụng layout do mình tự tạo thay vì layout Android cung cấp sẵn cho hiển thị các thành phần của ListView.

Nếu chạy thử, các bạn có thể thấy khi ta đánh dấu vào checkbox của 1 thành phần trong list, rồi nhấn Menu và chọn delete thì thành phần sẽ bị gỡ bỏ khỏi danh sách.

tai lieu lap trinh android

Không có nhận xét nào: