From 2105cb8303dd09535a5a1d7091677f43e351cd14 Mon Sep 17 00:00:00 2001 From: Philipp Wo Date: Fri, 15 Mar 2019 18:08:47 +0100 Subject: [PATCH] 1. Pause --- .../airkoality/ui/activity/MainActivity.java | 78 ++++++++++++------- .../ui/fragment/LocationListFragment.java | 56 +++++++++++++ .../airkoality/ui/fragment/MapFragment.java | 24 ++++++ .../app/src/main/res/layout/activity_main.xml | 18 +++-- .../res/layout/fragment_location_list.xml | 12 +++ .../app/src/main/res/layout/fragment_map.xml | 16 ++++ .../app/src/main/res/menu/main_bottom.xml | 4 +- README.md | 16 ++++ 8 files changed, 188 insertions(+), 36 deletions(-) create mode 100644 AirKoality/app/src/main/java/at/fhj/airkoality/ui/fragment/LocationListFragment.java create mode 100644 AirKoality/app/src/main/java/at/fhj/airkoality/ui/fragment/MapFragment.java create mode 100644 AirKoality/app/src/main/res/layout/fragment_location_list.xml create mode 100644 AirKoality/app/src/main/res/layout/fragment_map.xml diff --git a/AirKoality/app/src/main/java/at/fhj/airkoality/ui/activity/MainActivity.java b/AirKoality/app/src/main/java/at/fhj/airkoality/ui/activity/MainActivity.java index 3dc3c90..d1c8665 100644 --- a/AirKoality/app/src/main/java/at/fhj/airkoality/ui/activity/MainActivity.java +++ b/AirKoality/app/src/main/java/at/fhj/airkoality/ui/activity/MainActivity.java @@ -4,51 +4,77 @@ import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.design.widget.BottomNavigationView; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentTransaction; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; import android.view.MenuItem; -import android.widget.TextView; -import android.widget.Toast; -import java.util.ArrayList; -import java.util.List; import at.fhj.airkoality.R; -import at.fhj.airkoality.model.Location; -import at.fhj.airkoality.ui.adapter.LocationListAdapter; +import at.fhj.airkoality.ui.fragment.LocationListFragment; +import at.fhj.airkoality.ui.fragment.MapFragment; + +public class MainActivity extends AppCompatActivity { + + private Fragment locationListFragment; + private Fragment mapFragment; + + private static final String LOCATION_LIST = "location_list"; + private static final String MAP = "map"; + + + private BottomNavigationView bottomNavigationView; -public class MainActivity extends AppCompatActivity implements LocationListAdapter.ItemClickListener { -private RecyclerView locationList; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); + locationListFragment = new LocationListFragment(); + mapFragment = new MapFragment(); - locationList = findViewById(R.id.rvLocationList); - List locations = new ArrayList<>(); + bottomNavigationView = findViewById(R.id.bnvMain); - locations.add(new Location("Daheim", "Graz" , "Österreich")); - locations.add(new Location("Daheim2", "Graz" , "Österreich")); - locations.add(new Location("Daheim3", "Graz" , "Österreich")); - locations.add(new Location("Daheim4", "Graz" , "Österreich")); - locations.add(new Location("Daheim5", "Graz" , "Österreich")); - locations.add(new Location("Daheim6", "Graz" , "Österreich")); - locations.add(new Location("Daheim7", "Graz" , "Österreich")); - locations.add(new Location("Daheim8", "Graz" , "Österreich")); + FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); + transaction.add(R.id.flFragmentContainer, locationListFragment); + transaction.add(R.id.flFragmentContainer, mapFragment); - LocationListAdapter adapter = new LocationListAdapter(locations, this); + transaction.commit(); - locationList.setAdapter(adapter); - locationList.setLayoutManager(new LinearLayoutManager(this)); + bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() { + @Override + public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) { + switch (menuItem.getItemId()){ + case R.id.action_location: + setSelectedFragment(LOCATION_LIST); + break; + case R.id.action_map: + setSelectedFragment(MAP); + break; + } + return false; + } + }); + setSelectedFragment(LOCATION_LIST); } - @Override - public void onItemClicked(Location location, int position) { - Toast.makeText(this, "Clicked " + location, Toast.LENGTH_SHORT).show(); + + private void setSelectedFragment(String fragmentName){ + FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); + switch (fragmentName) { + case LOCATION_LIST: + transaction.hide(mapFragment); + transaction.show(locationListFragment); + break; + case MAP: + transaction.hide(locationListFragment); + transaction.show(mapFragment); + break; + } + transaction.commit(); } + } diff --git a/AirKoality/app/src/main/java/at/fhj/airkoality/ui/fragment/LocationListFragment.java b/AirKoality/app/src/main/java/at/fhj/airkoality/ui/fragment/LocationListFragment.java new file mode 100644 index 0000000..8264278 --- /dev/null +++ b/AirKoality/app/src/main/java/at/fhj/airkoality/ui/fragment/LocationListFragment.java @@ -0,0 +1,56 @@ +package at.fhj.airkoality.ui.fragment; + +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.support.v4.app.Fragment; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Toast; + +import java.util.ArrayList; +import java.util.List; + +import at.fhj.airkoality.R; +import at.fhj.airkoality.model.Location; +import at.fhj.airkoality.ui.adapter.LocationListAdapter; + +public class LocationListFragment extends Fragment implements LocationListAdapter.ItemClickListener { + + private RecyclerView locationList; + + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + View view = inflater.inflate(R.layout.fragment_location_list, container, false); + + locationList = view.findViewById(R.id.rvLocationList); + List locations = new ArrayList<>(); + + locations.add(new Location("Daheim", "Graz" , "Österreich")); + locations.add(new Location("Daheim2", "Graz" , "Österreich")); + locations.add(new Location("Daheim3", "Graz" , "Österreich")); + locations.add(new Location("Daheim4", "Graz" , "Österreich")); + locations.add(new Location("Daheim5", "Graz" , "Österreich")); + locations.add(new Location("Daheim6", "Graz" , "Österreich")); + locations.add(new Location("Daheim7", "Graz" , "Österreich")); + locations.add(new Location("Daheim8", "Graz" , "Österreich")); + + LocationListAdapter adapter = new LocationListAdapter(locations, this); + + locationList.setAdapter(adapter); + locationList.setLayoutManager(new LinearLayoutManager(getContext())); + + return view; + } + + + @Override + public void onItemClicked(Location location, int position) { + Toast.makeText(getContext(), "Clicked " + location, Toast.LENGTH_SHORT).show(); + } +} diff --git a/AirKoality/app/src/main/java/at/fhj/airkoality/ui/fragment/MapFragment.java b/AirKoality/app/src/main/java/at/fhj/airkoality/ui/fragment/MapFragment.java new file mode 100644 index 0000000..00cbfb7 --- /dev/null +++ b/AirKoality/app/src/main/java/at/fhj/airkoality/ui/fragment/MapFragment.java @@ -0,0 +1,24 @@ +package at.fhj.airkoality.ui.fragment; + +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.support.v4.app.Fragment; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import at.fhj.airkoality.R; + +public class MapFragment extends Fragment { + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + + View view = inflater.inflate(R.layout.fragment_map, container, false); + + + + return view; + } +} diff --git a/AirKoality/app/src/main/res/layout/activity_main.xml b/AirKoality/app/src/main/res/layout/activity_main.xml index 5938a68..d86d216 100644 --- a/AirKoality/app/src/main/res/layout/activity_main.xml +++ b/AirKoality/app/src/main/res/layout/activity_main.xml @@ -22,17 +22,19 @@ android:layout_alignParentBottom="true" android:layout_width="match_parent" android:layout_height="wrap_content" - > + /> - - - + android:layout_height="match_parent"> + + + + + \ No newline at end of file diff --git a/AirKoality/app/src/main/res/layout/fragment_location_list.xml b/AirKoality/app/src/main/res/layout/fragment_location_list.xml new file mode 100644 index 0000000..d59c747 --- /dev/null +++ b/AirKoality/app/src/main/res/layout/fragment_location_list.xml @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file diff --git a/AirKoality/app/src/main/res/layout/fragment_map.xml b/AirKoality/app/src/main/res/layout/fragment_map.xml new file mode 100644 index 0000000..3fb1bcb --- /dev/null +++ b/AirKoality/app/src/main/res/layout/fragment_map.xml @@ -0,0 +1,16 @@ + + + + + + + + \ No newline at end of file diff --git a/AirKoality/app/src/main/res/menu/main_bottom.xml b/AirKoality/app/src/main/res/menu/main_bottom.xml index 118a882..5e6c34d 100644 --- a/AirKoality/app/src/main/res/menu/main_bottom.xml +++ b/AirKoality/app/src/main/res/menu/main_bottom.xml @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/README.md b/README.md index 877fe83..0abf785 100644 --- a/README.md +++ b/README.md @@ -44,3 +44,19 @@ Liste bekommt einen Adapter und stellt dann nur Listenelemente dar, die gerade a Card View Layout ausprobiert Toast Messages implementiert -> Pop up Nachrichten im unteren Bereich des Bildschirms + + +## 15.03.2019 - Lab 4 + +RecyclerView -> Items der View wiederverwendbar machen + - vorsicht bei ausgewählten Items (Adapter muss sich Position merken) + +### Fragments + - ursprünglich für Tablets entwickelt + - Darstellung von z.B. Listen und Inhalt gleichzeitig + +### Storage +- unterschiedliche Möglichkeiten der Speicherung + - local storage (im App Verzeichnis) + - external storage + - \ No newline at end of file