From 22d340efbd0f92b37b7aec456f4cb17d3d6dadaa Mon Sep 17 00:00:00 2001 From: Mateusz Lubecki Date: Thu, 11 Nov 2021 13:13:55 +0100 Subject: [PATCH] sorting favourites list --- .../pogodacc/activity/FavouritesActivity.java | 64 +++++++++++++++++-- .../pogodacc/type/ParceableStationsList.java | 5 ++ app/src/main/res/menu/menu_favourites.xml | 12 +++- 3 files changed, 74 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/cc/pogoda/mobile/pogodacc/activity/FavouritesActivity.java b/app/src/main/java/cc/pogoda/mobile/pogodacc/activity/FavouritesActivity.java index ca8f8ca..dceedc7 100644 --- a/app/src/main/java/cc/pogoda/mobile/pogodacc/activity/FavouritesActivity.java +++ b/app/src/main/java/cc/pogoda/mobile/pogodacc/activity/FavouritesActivity.java @@ -2,23 +2,45 @@ package cc.pogoda.mobile.pogodacc.activity; import android.os.Bundle; import android.view.Menu; +import android.view.MenuItem; +import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import java.util.Comparator; + import cc.pogoda.mobile.pogodacc.R; import cc.pogoda.mobile.pogodacc.adapter.WeatherStationRecyclerViewAdapter; import cc.pogoda.mobile.pogodacc.config.AppConfiguration; import cc.pogoda.mobile.pogodacc.type.ParceableFavsCallReason; import cc.pogoda.mobile.pogodacc.type.ParceableStationsList; +import cc.pogoda.mobile.pogodacc.type.WeatherStation; public class FavouritesActivity extends AppCompatActivity { RecyclerView recyclerViewFavourites; - ParceableStationsList favourites; + ParceableStationsList favourites, sortedFavourites; + + boolean sorting = false; + + WeatherStationRecyclerViewAdapter adapter = null; + + ParceableFavsCallReason callReason; + + private class WxStationComparator implements Comparator { + + @Override + public int compare(WeatherStation station, WeatherStation t1) { + String name = station.getDisplayedName(); + String name1 = t1.getDisplayedName(); + + return (name.compareTo(name1)); + } + } @Override public boolean onCreateOptionsMenu(Menu menu) { @@ -28,13 +50,49 @@ public class FavouritesActivity extends AppCompatActivity { return true; } + @Override + public boolean onOptionsItemSelected(@NonNull MenuItem item) { + //return super.onOptionsItemSelected(item); + + switch (item.getItemId()) { + case R.id.fav_sort_alph_oder: + sorting = true; + + if (recyclerViewFavourites != null) { + adapter = new WeatherStationRecyclerViewAdapter(sortedFavourites.getList(), this, callReason.getReason()); + + recyclerViewFavourites.setAdapter(adapter); + } + + break; + case R.id.fav_sort_add_order: + sorting = false; + + if (recyclerViewFavourites != null) { + adapter = new WeatherStationRecyclerViewAdapter(favourites.getList(), this, callReason.getReason()); + + recyclerViewFavourites.setAdapter(adapter); + } + + break; + case R.id.fav_remove_noext: + break; + } + + return true; + } + @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); favourites = getIntent().getParcelableExtra("favs"); - ParceableFavsCallReason callReason = getIntent().getParcelableExtra("callReason"); + sortedFavourites = new ParceableStationsList(favourites); + + sortedFavourites.getList().sort(new WxStationComparator()); + + callReason = getIntent().getParcelableExtra("callReason"); if (favourites == null || favourites.getList().size() == 0) { setContentView(R.layout.activity_favourites_empty); @@ -45,8 +103,6 @@ public class FavouritesActivity extends AppCompatActivity { recyclerViewFavourites = findViewById(R.id.recyclerViewFavourites); if (recyclerViewFavourites != null) { - WeatherStationRecyclerViewAdapter adapter = null; - adapter = new WeatherStationRecyclerViewAdapter(favourites.getList(), this, callReason.getReason()); recyclerViewFavourites.setAdapter(adapter); diff --git a/app/src/main/java/cc/pogoda/mobile/pogodacc/type/ParceableStationsList.java b/app/src/main/java/cc/pogoda/mobile/pogodacc/type/ParceableStationsList.java index 94bf548..0895e56 100644 --- a/app/src/main/java/cc/pogoda/mobile/pogodacc/type/ParceableStationsList.java +++ b/app/src/main/java/cc/pogoda/mobile/pogodacc/type/ParceableStationsList.java @@ -121,6 +121,11 @@ public class ParceableStationsList implements Parcelable { } + public ParceableStationsList(ParceableStationsList in ) { + this.list = new ArrayList<>(in.getList()); + this.listSize = this.list.size(); + } + public ParceableStationsList() { } diff --git a/app/src/main/res/menu/menu_favourites.xml b/app/src/main/res/menu/menu_favourites.xml index e8966a6..26bcb68 100644 --- a/app/src/main/res/menu/menu_favourites.xml +++ b/app/src/main/res/menu/menu_favourites.xml @@ -2,7 +2,13 @@ - - - + + + \ No newline at end of file