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) {


}

});

});