From e2f49fe23b2ae1a910ab7015167e5ed9a5e4988a Mon Sep 17 00:00:00 2001 From: Marcin Zelent Date: Mon, 23 Apr 2018 17:19:58 +0200 Subject: Added proper new observation layout with geolocation and bird choosing, added swipe refreshing. --- .../liberavem/AllObservationsFragment.java | 12 +++ .../marcinzelent/liberavem/BirdsListAdapter.java | 63 +++++++++++ .../org/marcinzelent/liberavem/DataKeeper.java | 7 +- .../org/marcinzelent/liberavem/MainActivity.java | 3 +- .../liberavem/MyObservationsFragment.java | 15 +++ .../liberavem/NewObservationActivity.java | 116 +++++++++++++++++---- .../liberavem/ObservationDetailsActivity.java | 8 ++ 7 files changed, 197 insertions(+), 27 deletions(-) create mode 100644 app/src/main/java/org/marcinzelent/liberavem/BirdsListAdapter.java (limited to 'app/src/main/java/org/marcinzelent/liberavem') diff --git a/app/src/main/java/org/marcinzelent/liberavem/AllObservationsFragment.java b/app/src/main/java/org/marcinzelent/liberavem/AllObservationsFragment.java index a16e833..af4331a 100644 --- a/app/src/main/java/org/marcinzelent/liberavem/AllObservationsFragment.java +++ b/app/src/main/java/org/marcinzelent/liberavem/AllObservationsFragment.java @@ -4,6 +4,7 @@ package org.marcinzelent.liberavem; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.Fragment; +import android.support.v4.widget.SwipeRefreshLayout; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -48,6 +49,17 @@ public class AllObservationsFragment extends Fragment { @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + final SwipeRefreshLayout sfl = view.findViewById(R.id.swiperefresh); + sfl.setOnRefreshListener( + new SwipeRefreshLayout.OnRefreshListener() { + @Override + public void onRefresh() { + DataKeeper.getInstance().downloadData(getActivity()); + sfl.setRefreshing(false); + } + } + ); + DataKeeper.getInstance().downloadData(getActivity()); } diff --git a/app/src/main/java/org/marcinzelent/liberavem/BirdsListAdapter.java b/app/src/main/java/org/marcinzelent/liberavem/BirdsListAdapter.java new file mode 100644 index 0000000..68896c0 --- /dev/null +++ b/app/src/main/java/org/marcinzelent/liberavem/BirdsListAdapter.java @@ -0,0 +1,63 @@ +package org.marcinzelent.liberavem; + +import android.content.Context; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ArrayAdapter; +import android.widget.ImageView; +import android.widget.TextView; + +import com.squareup.picasso.Picasso; + + +public class BirdsListAdapter extends ArrayAdapter { + + private final Bird[] birds; + private Context mContext; + + public BirdsListAdapter(Context context, Bird[] birds){ + super(context, R.layout.observations_list_item); + this.mContext = context; + this.birds = birds; + } + + @Override + public View getDropDownView(int position, @Nullable View convertView, @NonNull ViewGroup parent) { + return getView(position, convertView, parent); + } + + @Override + public int getCount() { + return birds.length; + } + + @NonNull + @Override + public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) { + ViewHolder mViewHolder = new ViewHolder(); + + if (convertView == null) { + LayoutInflater mInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); + convertView = mInflater.inflate(R.layout.birds_list_item, parent, false); + mViewHolder.name = convertView.findViewById(R.id.bli_name); + mViewHolder.photo = convertView.findViewById(R.id.bli_photo); + convertView.setTag(mViewHolder); + } else { + mViewHolder = (ViewHolder) convertView.getTag(); + } + + mViewHolder.name.setText(birds[position].getNameEnglish()); + Picasso.get().load(birds[position].getPhotoUrl()).into(mViewHolder.photo); + + return convertView; + } + + private static class ViewHolder { + TextView name; + ImageView photo; + } + +} \ No newline at end of file diff --git a/app/src/main/java/org/marcinzelent/liberavem/DataKeeper.java b/app/src/main/java/org/marcinzelent/liberavem/DataKeeper.java index 27f9dc4..2000eab 100644 --- a/app/src/main/java/org/marcinzelent/liberavem/DataKeeper.java +++ b/app/src/main/java/org/marcinzelent/liberavem/DataKeeper.java @@ -1,9 +1,6 @@ package org.marcinzelent.liberavem; import android.app.Activity; -import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentManager; -import android.view.View; import android.widget.Toast; import com.android.volley.Request; @@ -103,7 +100,7 @@ public class DataKeeper { private void callPopulator(Activity activity) { if (birds != null && observations != null) { - MyObservationsFragment mo = (MyObservationsFragment) ((MainActivity)activity).getAllFragments().get(0); + MyObservationsFragment mo = (MyObservationsFragment) ((MainActivity)activity).getObservationFragments().get(0); List myObservationsList = new ArrayList<>(); for (Observation o : observations) if (o.getUserId().equals("Sminem")) myObservationsList.add(o); @@ -111,7 +108,7 @@ public class DataKeeper { Observation[] myObservations = new Observation[myObservationsList.size()]; myObservations = myObservationsList.toArray(myObservations); mo.populateList(myObservations, birds); - AllObservationsFragment aof = (AllObservationsFragment) ((MainActivity)activity).getAllFragments().get(1); + AllObservationsFragment aof = (AllObservationsFragment) ((MainActivity)activity).getObservationFragments().get(1); aof.populateList(observations, birds); } } diff --git a/app/src/main/java/org/marcinzelent/liberavem/MainActivity.java b/app/src/main/java/org/marcinzelent/liberavem/MainActivity.java index 7a17e94..4009f8c 100644 --- a/app/src/main/java/org/marcinzelent/liberavem/MainActivity.java +++ b/app/src/main/java/org/marcinzelent/liberavem/MainActivity.java @@ -9,6 +9,7 @@ import android.support.design.widget.Snackbar; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; +import android.support.v4.widget.SwipeRefreshLayout; import android.view.View; import android.support.design.widget.NavigationView; import android.support.v4.view.GravityCompat; @@ -139,7 +140,7 @@ public class MainActivity extends AppCompatActivity } - public List getAllFragments() { + public List getObservationFragments() { return observationsFragment.getChildFragmentManager().getFragments(); } } diff --git a/app/src/main/java/org/marcinzelent/liberavem/MyObservationsFragment.java b/app/src/main/java/org/marcinzelent/liberavem/MyObservationsFragment.java index d0ad649..b83d7b4 100644 --- a/app/src/main/java/org/marcinzelent/liberavem/MyObservationsFragment.java +++ b/app/src/main/java/org/marcinzelent/liberavem/MyObservationsFragment.java @@ -4,6 +4,7 @@ package org.marcinzelent.liberavem; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.Fragment; +import android.support.v4.widget.Sw