Bài 18: Cập nhật DataSource cho AutocompleteTextView lúc Runtime(P3)

Leave a Comment
-5- class MainActivity để xử lý nghiệp vụ:

10
11
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
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
package tranduythanh.com;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Locale;

import android.os.Bundle;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.DatePickerDialog.OnDateSetListener;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;
public class MainActivity extends Activity {
ListView lvSinhvien;
 //Cặp đôi để Custom ListView
 MyArrayAdapter adapterSinhvien;
 ArrayList<Student> arrSinhvien=new ArrayList<Student>();
 EditText editMa,editTen,editNamsinh;
 CheckBox chkGender;
 Button btnNamsinh,btnNhapsv;
 AutoCompleteTextView autoTextNs;
 //Cặp đôi để dùng cho AutoCompleteTextView
 ArrayList<String>arrAuto=new ArrayList<String>();
 ArrayAdapter<String>adapterAuto;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 getFormWidgets();
 addEventsForWidgets();
 //fakeData();
 }
 /**
 * hàm lấy các widgets
 */
 public void getFormWidgets()
 {
 editMa=(EditText) findViewById(R.id.editMa);
 editTen=(EditText) findViewById(R.id.editTen);
 editNamsinh=(EditText) findViewById(R.id.editNgaySinh);
 chkGender=(CheckBox) findViewById(R.id.chkGt);
 autoTextNs=(AutoCompleteTextView) findViewById(R.id.autoCompleteNS);
 btnNamsinh=(Button) findViewById(R.id.btnNgaySinh);
 btnNhapsv=(Button) findViewById(R.id.btnNhap);
 lvSinhvien=(ListView) findViewById(R.id.lvsinhvien);
 //Gán DataSource cho Adapter ListView
 adapterSinhvien=new MyArrayAdapter(this,
 R.layout.sinhvien_item_layout,
 arrSinhvien);
 //Gán Adapter vào ListView
 lvSinhvien.setAdapter(adapterSinhvien);
 }
 /**
 * Hàm thiết lập sự kiện cho Button
 */
 public void addEventsForWidgets()
 {
 btnNamsinh.setOnClickListener(new OnClickListener() {
 @Override
 public void onClick(View arg0) {
 // TODO Auto-generated method stub
 processBirthday();
 }
 });
 btnNhapsv.setOnClickListener(new OnClickListener() {
 @Override
 public void onClick(View v) {
 processInput();
 }
 });
 }
 /**
 * Hàm hiển thị DatePickerDialog để chọn năm sinh
 */
 public void processBirthday()
 {
 OnDateSetListener callBack=new OnDateSetListener() {
 @Override
 public void onDateSet(DatePicker arg0, int arg1, int arg2, int arg3) {
 editNamsinh.setText(arg3+"/"+arg2+"/"+arg1);
 }
 };
 //Ở đây Tôi chưa xử lý lấy ngày tháng năm trên EditText đưa vào DatePicker
 //Bạn tự làm
 DatePickerDialog dateDialog=new DatePickerDialog(this, callBack, 1989, 9, 25);
 dateDialog.setTitle("Birthday");
 dateDialog.show();
 }
 /**
 * Hàm xử lý nhập dữ liệu từ giao diện
 */
 public void processInput()
 {
 String ma=editMa.getText()+"";
 String ten=editTen.getText()+"";
 String ns=editNamsinh.getText()+"";
 String nois=autoTextNs.getText()+"";
 boolean gt=chkGender.isSelected();
 SimpleDateFormat dft=new SimpleDateFormat("dd/MM/yyyy",Locale.getDefault());
 try {
 Student s=new Student(ma, ten, gt, dft.parse(ns), nois);
 arrSinhvien.add(s);
 //Thêm mới xong thì gọi hàm dưới cập nhập lại giao diện
 adapterSinhvien.notifyDataSetChanged();
 //Xử lý cho Autocomplete về nơi sinh
 processAutoComplete(nois);
 } catch (ParseException e) {
 Toast.makeText(this, e.toString(), Toast.LENGTH_LONG).show();
 }
 }
 /**
 * Hàm xử lý Autocomplete Nơi sinh
 * @param data
 */
 public void processAutoComplete(String data)
 {
 //Chạy từ đầu chí cuối nếu trùng thì thoát khỏi hàm
 for(int i=0;i<arrAuto.size();i++)
 {
 String x=arrAuto.get(i);
 if(x.trim().equalsIgnoreCase(data.trim()))
 return;
 }
 //nếu xuống đây được tức là chưa tồn tại-> đừa vào arrAuto
 arrAuto.add(data);
 //Đưa vào ADapter
 adapterAuto=new ArrayAdapter<String>(this,
 android.R.layout.simple_list_item_1,
 arrAuto);
 //đưa Adapter vào AutoComplete
 autoTextNs.setAdapter(adapterAuto);
 }
 public void fakeData()
 {
 Student s1=new Student("1", "Đoàn Ái Nương", true, new Date(1980-1900, 2, 2), "TP. Hồ Chí Minh");
 Student s2=new Student("2", "Nguyễn Thùy Trang", true, new Date(1982-1900, 3, 3), "Lâm Đồng");
 Student s3=new Student("3", "Hoàng Văn Phúc", false, new Date(1970-1900, 4, 4), "Hà Nội");
 Student s4=new Student("4", "Đinh Hồng Lợi", false, new Date(1972-1900, 4, 4), "Bắc Giang");
 Student s5=new Student("5", "Nguyễn Hoàng Uyên", true, new Date(1970-1900, 4, 4), "Huê");
 arrSinhvien.add(s1);
 arrSinhvien.add(s2);
 arrSinhvien.add(s3);
 arrSinhvien.add(s4);
 arrSinhvien.add(s5);
 adapterSinhvien.notifyDataSetChanged();
 }
 @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;
 }
}
- Bạn có thể Tải code mẫu tại đây: http://www.mediafire.com/?m0jeop2fb83ib3u
- Chúc bạn thành công

0 nhận xét:

Đăng nhận xét