fix shit
This commit is contained in:
parent
2f13747b8a
commit
9e064dd64e
|
@ -24,10 +24,9 @@ import java.util.List;
|
|||
|
||||
import at.fhj.swd.dailyhelper.R;
|
||||
import at.fhj.swd.dailyhelper.model.Weather;
|
||||
import at.fhj.swd.dailyhelper.network.DownloadImageTask;
|
||||
|
||||
public class WeatherListAdapter extends RecyclerView.Adapter<WeatherListAdapter.WeatherItemViewHolder> {
|
||||
private ImageView imageView;
|
||||
|
||||
|
||||
private List<Weather> weathers;
|
||||
|
||||
|
@ -58,7 +57,7 @@ public class WeatherListAdapter extends RecyclerView.Adapter<WeatherListAdapter.
|
|||
weatherItemViewHolder.tvDate.setText(weathers.get(i).getDate());
|
||||
|
||||
String icon = weathers.get(i).getIcon();
|
||||
new DownloadImageTask(imageView).execute("https://openweathermap.org/img/w/" + icon + ".png");
|
||||
new DownloadImageTask(weatherItemViewHolder.imageView).execute("https://openweathermap.org/img/w/" + icon + ".png");
|
||||
|
||||
|
||||
weatherItemViewHolder.tvDescription.setText(weathers.get(i).getDescription());
|
||||
|
@ -79,6 +78,7 @@ public class WeatherListAdapter extends RecyclerView.Adapter<WeatherListAdapter.
|
|||
CardView cvWeatherItem;
|
||||
|
||||
TextView tvDate;
|
||||
ImageView imageView;
|
||||
|
||||
TextView tvDescription;
|
||||
TextView tvTemperature;
|
||||
|
@ -106,29 +106,4 @@ public class WeatherListAdapter extends RecyclerView.Adapter<WeatherListAdapter.
|
|||
void onItemClicked(Weather weather, int position);
|
||||
}
|
||||
|
||||
|
||||
private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
|
||||
ImageView bmImage;
|
||||
public DownloadImageTask(ImageView bmImage) {
|
||||
this.bmImage = bmImage;
|
||||
}
|
||||
|
||||
protected Bitmap doInBackground(String... urls) {
|
||||
String urldisplay = urls[0];
|
||||
Bitmap bmp = null;
|
||||
try {
|
||||
InputStream in = new java.net.URL(urldisplay).openStream();
|
||||
bmp = BitmapFactory.decodeStream(in);
|
||||
} catch (Exception e) {
|
||||
Log.e("Error", e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
return bmp;
|
||||
}
|
||||
protected void onPostExecute(Bitmap result) {
|
||||
bmImage.setImageBitmap(result);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
package at.fhj.swd.dailyhelper.network;
|
||||
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.BitmapFactory;
|
||||
import android.os.AsyncTask;
|
||||
import android.util.Log;
|
||||
import android.widget.ImageView;
|
||||
|
||||
import java.io.InputStream;
|
||||
|
||||
public class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
|
||||
ImageView bmImage;
|
||||
public DownloadImageTask(ImageView bmImage) {
|
||||
this.bmImage = bmImage;
|
||||
}
|
||||
|
||||
protected Bitmap doInBackground(String... urls) {
|
||||
String urldisplay = urls[0];
|
||||
Bitmap bmp = null;
|
||||
try {
|
||||
InputStream in = new java.net.URL(urldisplay).openStream();
|
||||
bmp = BitmapFactory.decodeStream(in);
|
||||
} catch (Exception e) {
|
||||
Log.e("Error", e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
return bmp;
|
||||
}
|
||||
protected void onPostExecute(Bitmap result) {
|
||||
bmImage.setImageBitmap(result);
|
||||
}
|
||||
}
|
|
@ -53,6 +53,7 @@ public class LocationService extends Service {
|
|||
.putFloat("speed", locationResult.getLocations().get(0).getSpeed()).apply();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -44,8 +44,9 @@ public class MainActivity extends AppCompatActivity
|
|||
private ProgressDialog progressDialog;
|
||||
private SharedPreferences preferences;
|
||||
private WeatherFragment weatherFragment;
|
||||
private HomeFragment homeFragment;
|
||||
private WeatherDB database;
|
||||
|
||||
private NavigationView navigationView;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
|
@ -56,6 +57,7 @@ public class MainActivity extends AppCompatActivity
|
|||
setSupportActionBar(toolbar);
|
||||
|
||||
weatherFragment = new WeatherFragment();
|
||||
homeFragment = new HomeFragment();
|
||||
|
||||
progressDialog = new ProgressDialog(this);
|
||||
preferences = PreferenceManager.getDefaultSharedPreferences(this);
|
||||
|
@ -64,7 +66,7 @@ public class MainActivity extends AppCompatActivity
|
|||
|
||||
|
||||
drawer = findViewById(R.id.drawer_layout);
|
||||
NavigationView navigationView = findViewById(R.id.nav_view);
|
||||
navigationView = findViewById(R.id.nav_view);
|
||||
navigationView.setNavigationItemSelectedListener(this);
|
||||
|
||||
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
|
||||
|
@ -73,10 +75,13 @@ public class MainActivity extends AppCompatActivity
|
|||
toggle.syncState();
|
||||
|
||||
if(savedInstanceState == null) {
|
||||
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new HomeFragment()).commit();
|
||||
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,homeFragment).commit();
|
||||
navigationView.setCheckedItem(R.id.nav_home);
|
||||
}
|
||||
|
||||
startLocationService();
|
||||
fetchWeather();
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
@ -105,6 +110,8 @@ public class MainActivity extends AppCompatActivity
|
|||
if(requestCode == 12435){
|
||||
if(grantResults[0] == PackageManager.PERMISSION_GRANTED){
|
||||
startLocationService();
|
||||
fetchWeather();
|
||||
updateFragments();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -127,7 +134,7 @@ public class MainActivity extends AppCompatActivity
|
|||
|
||||
switch (item.getItemId()){
|
||||
case R.id.nav_home:
|
||||
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new HomeFragment()).commit();
|
||||
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, homeFragment).commit();
|
||||
break;
|
||||
case R.id.nav_map:
|
||||
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new MapFragment()).commit();
|
||||
|
@ -155,7 +162,7 @@ public class MainActivity extends AppCompatActivity
|
|||
return true;
|
||||
|
||||
case R.id.action_refresh:
|
||||
// fetchLocations();
|
||||
fetchWeather();
|
||||
return true;
|
||||
|
||||
|
||||
|
@ -168,7 +175,10 @@ public class MainActivity extends AppCompatActivity
|
|||
private void updateFragments() {
|
||||
runOnUiThread(() -> {
|
||||
weatherFragment.refresh();
|
||||
homeFragment.refresh();
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
private void dismissProgressDialog() {
|
||||
|
@ -176,14 +186,14 @@ public class MainActivity extends AppCompatActivity
|
|||
}
|
||||
|
||||
|
||||
private void fetchWeather() {
|
||||
public void fetchWeather() {
|
||||
HttpsGetTask httpsGetTask = new HttpsGetTask(this);
|
||||
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
|
||||
float latitude = preferences.getFloat("latitude", -1000);
|
||||
float longitude = preferences.getFloat("longitude", -1000);
|
||||
|
||||
if (latitude == -1000 || longitude == -1000) {
|
||||
httpsGetTask.execute("https://api.openaq.org/v1/locations?country=AT&limit=200");
|
||||
httpsGetTask.execute("https://api.openweathermap.org/data/2.5/forecast?q=Vienna&limit=10&appid=030cadd0e9d6bdb9ae54ff0f841258ea&lang=de&units=metric");
|
||||
} else {
|
||||
httpsGetTask.execute("https://api.openweathermap.org/data/2.5/forecast?lat="+ latitude +"&lon=" + longitude + "&appid=030cadd0e9d6bdb9ae54ff0f841258ea&lang=de&units=metric");
|
||||
}
|
||||
|
@ -217,8 +227,6 @@ public class MainActivity extends AppCompatActivity
|
|||
|
||||
//notify fragments
|
||||
dismissProgressDialog();
|
||||
//TODO
|
||||
updateFragments();
|
||||
|
||||
}).start();
|
||||
|
||||
|
|
|
@ -2,6 +2,8 @@ package at.fhj.swd.dailyhelper.ui.fragemnt;
|
|||
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.graphics.Color;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.preference.PreferenceManager;
|
||||
|
@ -12,11 +14,14 @@ import android.support.v7.widget.CardView;
|
|||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import at.fhj.swd.dailyhelper.R;
|
||||
import at.fhj.swd.dailyhelper.adapter.WeatherListAdapter;
|
||||
import at.fhj.swd.dailyhelper.db.room.WeatherDB;
|
||||
import at.fhj.swd.dailyhelper.model.Weather;
|
||||
import at.fhj.swd.dailyhelper.network.DownloadImageTask;
|
||||
import at.fhj.swd.dailyhelper.service.LocationService;
|
||||
|
||||
public class HomeFragment extends Fragment {
|
||||
|
@ -40,6 +45,27 @@ public class HomeFragment extends Fragment {
|
|||
view = inflater.inflate(R.layout.fragment_home, container, false);
|
||||
context = this.getContext();
|
||||
|
||||
loadPosition();
|
||||
|
||||
loadWether();
|
||||
|
||||
return view;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPause() {
|
||||
|
||||
handler.removeCallbacks(runnableCode);
|
||||
super.onPause();
|
||||
}
|
||||
|
||||
private void loadPosition () {
|
||||
|
||||
preferences = PreferenceManager.getDefaultSharedPreferences(this.getContext());
|
||||
|
||||
tvLongitude = view.findViewById(R.id.tv_longitude);
|
||||
|
@ -62,40 +88,28 @@ public class HomeFragment extends Fragment {
|
|||
tvAltitude.setText(context.getString(R.string.altitude) +": "+ preferences.getFloat("altitude", -1000));
|
||||
tvAccuracy.setText(context.getString(R.string.accuracy) +": "+ preferences.getFloat("accuracy", -1000));
|
||||
|
||||
|
||||
handler.postDelayed(this, 2000);
|
||||
}
|
||||
};
|
||||
// Start the initial runnable task by posting through the handler
|
||||
handler.post(runnableCode);
|
||||
|
||||
getWeather();
|
||||
|
||||
return view;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPause() {
|
||||
|
||||
handler.removeCallbacks(runnableCode);
|
||||
super.onPause();
|
||||
}
|
||||
|
||||
private void getWeather (){
|
||||
private void loadWether (){
|
||||
|
||||
Weather weather;
|
||||
|
||||
CardView cvCardView;
|
||||
TextView tvDate;
|
||||
ImageView imageView;
|
||||
TextView tvDescription;
|
||||
TextView tvTemperature;
|
||||
TextView tvHumity;
|
||||
|
||||
cvCardView = view.findViewById(R.id.incWeather);
|
||||
tvDate = view.findViewById(R.id.tvDate);
|
||||
imageView = view.findViewById(R.id.card_view_image);
|
||||
tvDescription = view.findViewById(R.id.tvDescription);
|
||||
tvTemperature = view.findViewById(R.id.tvTemperature);
|
||||
tvHumity = view.findViewById(R.id.tvHumity);
|
||||
|
@ -103,11 +117,24 @@ public class HomeFragment extends Fragment {
|
|||
weather = WeatherDB.getDatabase(getContext()).weatherDAO().getFirst();
|
||||
|
||||
if (weather != null) {
|
||||
|
||||
cvCardView.setCardElevation(0);
|
||||
tvDate.setText(weather.getDate());
|
||||
|
||||
new DownloadImageTask(imageView).execute("https://openweathermap.org/img/w/" + weather.getIcon() + ".png");
|
||||
|
||||
|
||||
tvDescription.setText(weather.getDescription());
|
||||
tvTemperature.setText(context.getString(R.string.temperature) + ": " + weather.getTemp() + "°C");
|
||||
tvHumity.setText(context.getString(R.string.humidity) + ": " + weather.getHumidity() + "%");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void refresh(){
|
||||
loadPosition();
|
||||
loadWether();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -44,7 +44,9 @@ public class WeatherFragment extends Fragment implements WeatherListAdapter.Item
|
|||
|
||||
private void fetchLoctions() {
|
||||
WeatherListAdapter adapter = new WeatherListAdapter(WeatherDB.getDatabase(getContext()).weatherDAO().getAll(), this);
|
||||
weatherList.setAdapter(adapter);
|
||||
if (weatherList != null) {
|
||||
weatherList.setAdapter(adapter);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
<solid android:color="@android:color/white" />
|
||||
<stroke
|
||||
android:width="5dip"
|
||||
android:color="@android:color/white" />
|
||||
android:color="@android:color/darker_gray" />
|
||||
|
||||
</shape>
|
|
@ -2,8 +2,7 @@
|
|||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
android:background="@android:color/holo_blue_light">
|
||||
android:orientation="vertical">
|
||||
|
||||
|
||||
|
||||
|
@ -75,7 +74,7 @@
|
|||
|
||||
<TextView
|
||||
android:id="@+id/tv_wheather"
|
||||
android:text="Wetter"
|
||||
android:text="@string/actual_weather"
|
||||
android:padding="10dp"
|
||||
android:textSize="25sp"
|
||||
android:layout_width="wrap_content"
|
||||
|
@ -84,7 +83,8 @@
|
|||
<include android:id="@+id/incWeather"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
layout="@layout/weather_list_item"/>
|
||||
layout="@layout/weather_list_item"
|
||||
/>
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:id="@+id/cvWeatherItem"
|
||||
android:foreground="?attr/selectableItemBackground"
|
||||
android:layout_margin="5dp"
|
||||
|
@ -11,29 +12,37 @@
|
|||
<LinearLayout
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="5dp">
|
||||
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvDate"
|
||||
android:text="Date: "
|
||||
android:padding="10dp"
|
||||
android:textSize="25sp"
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" />
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center_horizontal"
|
||||
>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/card_view_image"
|
||||
android:layout_width="100dp"
|
||||
android:layout_height="100dp"
|
||||
android:scaleType="fitXY" />
|
||||
<ImageView
|
||||
android:id="@+id/card_view_image"
|
||||
android:layout_width="70dp"
|
||||
android:layout_height="70dp"
|
||||
android:scaleType="fitXY" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvDate"
|
||||
android:text="Date: "
|
||||
android:padding="15dp"
|
||||
android:textSize="20sp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center_horizontal"/>
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvDescription"
|
||||
android:text="Description:"
|
||||
android:padding="5dp"
|
||||
android:textSize="15sp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" />
|
||||
|
@ -42,7 +51,6 @@
|
|||
<TextView
|
||||
android:id="@+id/tvTemperature"
|
||||
android:text="Temp:"
|
||||
android:padding="4dp"
|
||||
android:textSize="15sp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" />
|
||||
|
@ -50,7 +58,6 @@
|
|||
<TextView
|
||||
android:id="@+id/tvHumity"
|
||||
android:text="Hum:"
|
||||
android:padding="4dp"
|
||||
android:textSize="15sp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" />
|
||||
|
|
|
@ -24,5 +24,6 @@
|
|||
<string name="position">Position:</string>
|
||||
<string name="temperature">Temp:</string>
|
||||
<string name="humidity">Feuchtigkeit:</string>
|
||||
<string name="actual_weather">Aktuelles Wetter:</string>
|
||||
|
||||
</resources>
|
||||
</resources>
|
||||
|
|
Loading…
Reference in New Issue