mirror of
https://github.com/Nezumi-2711/Foodify.git
synced 2026-09-22 20:00:50 +00:00
Add search function
This commit is contained in:
@@ -15,19 +15,32 @@ import android.view.ViewGroup;
|
||||
import android.view.inputmethod.InputMethodManager;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.capstone.foodify.API.FoodApi;
|
||||
import com.capstone.foodify.Model.Food.Food;
|
||||
import com.capstone.foodify.Model.Food.FoodAdapter;
|
||||
import com.capstone.foodify.R;
|
||||
import com.paulrybitskyi.persistentsearchview.PersistentSearchView;
|
||||
import com.paulrybitskyi.persistentsearchview.listeners.OnSearchConfirmedListener;
|
||||
import com.paulrybitskyi.persistentsearchview.listeners.OnSearchQueryChangeListener;
|
||||
import com.paulrybitskyi.persistentsearchview.utils.SuggestionCreationUtil;
|
||||
import com.paulrybitskyi.persistentsearchview.utils.VoiceRecognitionDelegate;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import retrofit2.Call;
|
||||
import retrofit2.Callback;
|
||||
import retrofit2.Response;
|
||||
|
||||
public class SearchFragment extends Fragment {
|
||||
|
||||
private RecyclerView recycler_view_search;
|
||||
private FoodAdapter foodAdapter;
|
||||
private PersistentSearchView persistentSearchView;
|
||||
|
||||
private static List<Food> listFoodSearch = new ArrayList<>();
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
@@ -45,40 +58,58 @@ public class SearchFragment extends Fragment {
|
||||
foodAdapter.setData(listFood);
|
||||
recycler_view_search.setAdapter(foodAdapter);
|
||||
|
||||
|
||||
persistentSearchView.setOnLeftBtnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
Toast.makeText(getContext(), "Left Btn", Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
});
|
||||
|
||||
persistentSearchView.setOnClearInputBtnClickListener(new View.OnClickListener() {
|
||||
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
// Handle the clear input button click
|
||||
Toast.makeText(getContext(), "Clear Btn", Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
|
||||
});
|
||||
persistentSearchView.setLeftButtonDrawable(R.drawable.ic_search);
|
||||
|
||||
// Setting a delegate for the voice recognition input
|
||||
persistentSearchView.setVoiceRecognitionDelegate(new VoiceRecognitionDelegate(this));
|
||||
|
||||
persistentSearchView.setProgressBarEnabled(true);
|
||||
persistentSearchView.setSuggestionsDisabled(false);
|
||||
|
||||
persistentSearchView.setOnSearchConfirmedListener(new OnSearchConfirmedListener() {
|
||||
|
||||
@Override
|
||||
public void onSearchConfirmed(PersistentSearchView searchView, String query) {
|
||||
// Handle a search confirmation. This is the place where you'd
|
||||
// want to perform a search against your data provider.
|
||||
Toast.makeText(getContext(), "setOnSearchConfirmedListener", Toast.LENGTH_SHORT).show();
|
||||
if(!query.isEmpty())
|
||||
FoodApi.apiService.listFood(query).enqueue(new Callback<List<Food>>() {
|
||||
@Override
|
||||
public void onResponse(Call<List<Food>> call, Response<List<Food>> response) {
|
||||
List<Food> foodData = response.body();
|
||||
|
||||
if(foodData != null) {
|
||||
listFoodSearch.clear();
|
||||
for(Food tempFood: foodData){
|
||||
listFoodSearch.add(tempFood);
|
||||
}
|
||||
foodAdapter.setData(listFoodSearch);
|
||||
recycler_view_search.setAdapter(foodAdapter);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Call<List<Food>> call, Throwable t) {
|
||||
Toast.makeText(getContext(), "Lỗi" + t, Toast.LENGTH_LONG).show();
|
||||
}
|
||||
});
|
||||
|
||||
searchView.collapse();
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
persistentSearchView.setOnSearchQueryChangeListener(new OnSearchQueryChangeListener() {
|
||||
@Override
|
||||
public void onSearchQueryChanged(PersistentSearchView searchView, String oldQuery, String newQuery) {
|
||||
if(searchView.isInputQueryEmpty()){
|
||||
foodAdapter.setData(listFood);
|
||||
recycler_view_search.setAdapter(foodAdapter);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Disabling the suggestions since they are unused in
|
||||
// the simple implementation
|
||||
persistentSearchView.setSuggestionsDisabled(false);
|
||||
@@ -96,4 +127,5 @@ public class SearchFragment extends Fragment {
|
||||
}
|
||||
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user