commit 5cfb3712bd70be8fddc7e4715d0c1645416876ed
parent 734a1af71f5c7d5f0103d140f8e76e205502a6d0
Author: William Lindholm <a22willi@student.his.se>
Date: Wed, 10 May 2023 10:09:03 +0200
now using .addAll() to create a copy of meteorites instead of pointer. And fixed sorting switch.
Diffstat:
1 file changed, 22 insertions(+), 51 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
@@ -16,6 +16,7 @@ import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
+import android.provider.MediaStore;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
@@ -23,6 +24,7 @@ import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.PopupWindow;
+import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.SeekBar;
import android.widget.TextView;
@@ -30,6 +32,7 @@ import android.widget.Toast;
import com.example.project_assignment.comparators.SortByLocation;
import com.example.project_assignment.comparators.SortByName;
+import com.example.project_assignment.comparators.SortByWeight;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
@@ -79,46 +82,10 @@ public class MainActivity extends AppCompatActivity implements JsonTask.JsonTask
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
FloatingActionButton showSortingOptionsButton = findViewById(R.id.showSortingOptionsButton);
- FloatingActionButton locationSortButton = findViewById(R.id.locationSortButton);
- FloatingActionButton nameSortButton = findViewById(R.id.nameSortButton);
- FloatingActionButton masSortButton = findViewById(R.id.masSortButton);
showSortingOptionsButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- if (locationSortButton.getVisibility() == View.VISIBLE) {
- locationSortButton.setVisibility(View.INVISIBLE);
- nameSortButton.setVisibility(View.INVISIBLE);
- masSortButton.setVisibility(View.INVISIBLE);
- } else {
- locationSortButton.setVisibility(View.VISIBLE);
- nameSortButton.setVisibility(View.VISIBLE);
- masSortButton.setVisibility(View.VISIBLE);
- }
- }
- });
-
- locationSortButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- Collections.sort(meteorites, new SortByLocation());
- adapter.notifyDataSetChanged();
- }
- });
-
- nameSortButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- Collections.sort(meteorites, new SortByName());
- adapter.notifyDataSetChanged();
- }
- });
-
- masSortButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- showFilterOptions(findViewById(android.R.id.content));
- //Collections.sort(meteorites, new SortByWeight());
- //adapter.notifyDataSetChanged();
+ showFilterOptions(view);
}
});
}
@@ -129,7 +96,8 @@ public class MainActivity extends AppCompatActivity implements JsonTask.JsonTask
Type type = new TypeToken<List<Meteorite>>() {}.getType();
meteorites = gson.fromJson(json, type);
- unalteredMeteoriteList = meteorites;
+ unalteredMeteoriteList = new ArrayList<Meteorite>();
+ unalteredMeteoriteList.addAll(meteorites);
for (Meteorite m : meteorites) {
Log.d("Meteorite: ", m.toString());
@@ -170,15 +138,14 @@ public class MainActivity extends AppCompatActivity implements JsonTask.JsonTask
RadioGroup sorting = popupView.findViewById(R.id.sortingGroup);
-
-
-
//set all listeners
confirmButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- meteorites = unalteredMeteoriteList;
+ //reinitialize saved meteorites.
+ meteorites.clear();
+ meteorites.addAll(unalteredMeteoriteList);
//fetch all editText data.
int intMinMass = fetchEditTextData(minMass);
@@ -190,6 +157,7 @@ public class MainActivity extends AppCompatActivity implements JsonTask.JsonTask
ArrayList<Meteorite> toRemove = new ArrayList<Meteorite>();
+ //check if meteorites match filter settings.
for (Meteorite m : meteorites) {
boolean matchingFilter = m.matchingFilter(intMinMass, intMaxMass, intMinYear, intMaxYear, distance);
if (!matchingFilter) {
@@ -197,24 +165,27 @@ public class MainActivity extends AppCompatActivity implements JsonTask.JsonTask
}
}
+ //remove meteorites that did not match the filter settings.
for (Meteorite m : toRemove) {
meteorites.remove(m);
}
- System.out.println(selectedSortingButton);
switch (selectedSortingButton) {
- case 0:
- System.out.println("Sorting based on Name!");
+ case R.id.radioButtonSortLocation:
+ Collections.sort(meteorites, new SortByLocation());
+ System.out.println("sorting location");
break;
- case 1:
- System.out.println("Sorting based on Mass!");
+ case R.id.radioButtonSortWeight:
+ Collections.sort(meteorites, new SortByWeight());
+ System.out.println("Sort by mass");
break;
- case 2:
- System.out.println("Sorting based on Location!");
+ default:
+ Collections.sort(meteorites, new SortByName());
+ System.out.println("sort by name");
}
- adapter.notifyDataSetChanged();
+ adapter.notifyDataSetChanged();
try {
Thread.sleep(100);
@@ -268,7 +239,7 @@ public class MainActivity extends AppCompatActivity implements JsonTask.JsonTask
@Override
public void onLocationChanged(@NonNull Location location) {
- if (!distanceSet) {
+ if (distanceSet) {
return;
}
for (Meteorite m : meteorites) {