MeteoriteDB

Log | Files | Refs | README

commit d1331b8bb483caddf3231f8ab77821bd1661169a
parent 5d8498fc623be0f3c33e81b7f4ca96c87165f113
Author: William Lindholm <william_lindholm@outlook.com>
Date:   Wed, 10 May 2023 15:32:17 +0200

Now saving and loading filter/sorting as preference.

Diffstat:
Mapp/src/main/java/com/example/project_assignment/MainActivity.java | 54+++++++++++++++++++++++++++++++++++++++++++++++++++---
1 file changed, 51 insertions(+), 3 deletions(-)

diff --git a/app/src/main/java/com/example/project_assignment/MainActivity.java b/app/src/main/java/com/example/project_assignment/MainActivity.java @@ -103,6 +103,7 @@ public class MainActivity extends AppCompatActivity implements JsonTask.JsonTask Log.d("Meteorite: ", m.toString()); } + RecyclerView recyclerView = findViewById(R.id.recyclerView); adapter = new RecyclerViewAdapter(this, meteorites); @@ -165,6 +166,7 @@ public class MainActivity extends AppCompatActivity implements JsonTask.JsonTask } } + //remove meteorites that did not match the filter settings. for (Meteorite m : toRemove) { meteorites.remove(m); @@ -173,17 +175,25 @@ public class MainActivity extends AppCompatActivity implements JsonTask.JsonTask switch (selectedSortingButton) { case R.id.radioButtonSortLocation: Collections.sort(meteorites, new SortByLocation()); - System.out.println("sorting location"); + preferenceEditor.putString("sort", "location"); break; case R.id.radioButtonSortWeight: Collections.sort(meteorites, new SortByWeight()); - System.out.println("Sort by mass"); + preferenceEditor.putString("sort", "mass"); break; default: Collections.sort(meteorites, new SortByName()); - System.out.println("sort by name"); + preferenceEditor.putString("name", "name"); } + //save filter options. + preferenceEditor.putInt("minMass", intMinMass); + preferenceEditor.putInt("maxMass", intMaxMass); + preferenceEditor.putInt("minYear", intMinYear); + preferenceEditor.putInt("maxYear", intMaxYear); + preferenceEditor.putInt("distance", distance); + preferenceEditor.apply(); + adapter.notifyDataSetChanged(); @@ -246,6 +256,44 @@ public class MainActivity extends AppCompatActivity implements JsonTask.JsonTask m.generateDistanceFrom(location.getLatitude(), location.getLongitude()); distanceSet = true; } + filterMeteorites(); + } + + public void filterMeteorites() { + //if there are saved filter settings, load them. + if (preference.contains("minMass")) { + Toast.makeText(MainActivity.this, "Loaded stored filter", Toast.LENGTH_SHORT).show(); + ArrayList<Meteorite> toRemove = new ArrayList<>(); + + for (Meteorite m : meteorites) { + boolean matchingFilter = m.matchingFilter( + preference.getInt("minMass", 0), + preference.getInt("maxMass", 0), + preference.getInt("minYear", 0), + preference.getInt("maxYear", 0), + preference.getInt("distance", 0) + ); + if (!matchingFilter) { + toRemove.add(m); + } + } + //remove meteorites that did not match the filter settings. + for (Meteorite m : toRemove) { + meteorites.remove(m); + } + + switch (preference.getString("sort", "")) { + case "location": + Collections.sort(meteorites, new SortByLocation()); + break; + case "mass": + Collections.sort(meteorites, new SortByWeight()); + break; + default: + Collections.sort(meteorites, new SortByName()); + } + adapter.notifyDataSetChanged(); + } } }