BÀI 43 - CODE LƯU GIÁ TRỊ NGƯỜI DÙNG TÌM KIẾM TRONG LẬP TRÌNH ANDROID
Đoạn code do mình tự nghĩ ra, mình cảm thấy nó chưa tối ưu lắm nhưng nó hoạt động hiệu quả nên mình public nó lên đây! Cụ thể khi người dùng tìm vào ô tìm kiếm, thì nó sẽ lưu giá trị lại. Tối đa 5 giá trị gần nhất thôi, vì mình không muốn ứng dụng phát sinh nhiều biến không cần thiết. Ngoài ra, nó chỉ lưu những giá trị mới thôi, các giá trị trùng với 5 kết quả cũ sẽ được bỏ qua. Bạn có thể copy về và test thử. Chúc vui vẻ!
À mình sử dụng cơ sở dữ liệu trên Firebase để tìm kiếm kết quả nhé!
lnButton.setOnClickListener(v -> {
@SuppressLint("CommitPrefEdits")
SharedPreferences.Editor editorTimKiem = kqTimKiem.edit(); //kqTimKiem là SharedPreferences
pgSearch.setVisibility(View.VISIBLE); // pgSearch là ProgressBar
String result = edtSearch.getText().toString();
Boolean kiemTraDuLieu = false;
for (int a=0; a<arrayListTimKiem.size(); a++){
String duLieu = arrayListTimKiem.get(a);
if (duLieu.equals(result)){
kiemTraDuLieu = true;
break;
}
}
for (int t=0; t<5; t++){
String duLieu = kqTimKiem.getString("key "+t, "null");
if (duLieu.equals(result)){
kiemTraDuLieu = true;
break;
} else {
kiemTraDuLieu = false;
}
}
if (kiemTraDuLieu.equals(false)) {
arrayListTimKiem.add(result);
for (int i = 0; i < 5; i++) {
String duLieu = kqTimKiem.getString("key "+i, "null");
if (duLieu.equals("null")) {
editorTimKiem.putString("key " + i, result);
editorTimKiem.commit();
break;
} else {
editorTimKiem.putString("key 0", kqTimKiem.getString("key 1", "null"));
editorTimKiem.putString("key 1", kqTimKiem.getString("key 2", "null"));
editorTimKiem.putString("key 2", kqTimKiem.getString("key 3", "null"));
editorTimKiem.putString("key 3", kqTimKiem.getString("key 4", "null"));
editorTimKiem.putString("key 4", result);
editorTimKiem.commit();
break;
}
}
}
DatabaseReference timKetqua = FirebaseDatabase
.getInstance(FirebaseMark.getInstance(AddOthersAcitivity.this))
.getReference();
timKetqua.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
Boolean ketquatimkiem = false;
for (DataSnapshot data : snapshot.getChildren()){
String key = data.getKey();
if (Objects.equals(key, result)){
pgSearch.setVisibility(View.INVISIBLE);
ketquatimkiem = true;
Intent timThay = new Intent(Acitivity.this
, SecondActivity.class);
timThay.putExtra("nameProject", result);
finish();
startActivity(timThay);
}
}
if (ketquatimkiem.equals(false)) {
pgSearch.setVisibility(View.INVISIBLE);
Toast.makeText(Acitivity.this
, "khong_tim_thay"), Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
});