diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyListFragment.java b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyListFragment.java index 09dd6e40e..67f99e4c6 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyListFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyListFragment.java @@ -1,202 +1,32 @@ package fr.free.nrw.commons.nearby; -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; -import android.location.Location; + import android.os.Bundle; import android.support.v4.app.Fragment; -import android.support.v4.content.LocalBroadcastManager; -import android.support.v7.widget.RecyclerView; -import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; -import com.bumptech.glide.Glide; -import com.bumptech.glide.load.engine.DiskCacheStrategy; -import com.example.android.xyztouristattractions.R; -import com.example.android.xyztouristattractions.common.Attraction; -import com.example.android.xyztouristattractions.common.Constants; -import com.example.android.xyztouristattractions.common.Utils; -import com.example.android.xyztouristattractions.provider.TouristAttractions; -import com.example.android.xyztouristattractions.service.UtilityService; -import com.google.android.gms.location.FusedLocationProviderApi; -import com.google.android.gms.maps.model.LatLng; -import com.google.maps.android.SphericalUtil; - -import java.util.Collections; -import java.util.Comparator; -import java.util.List; +import fr.free.nrw.commons.R; public class NearbyListFragment extends Fragment { - private AttractionAdapter mAdapter; private LatLng mLatestLocation; private int mImageSize; private boolean mItemClicked; - public NearbyListFragment() {} + public NearbyListFragment() { + } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - mLatestLocation = Utils.getLocation(getActivity()); - List attractions = loadAttractionsFromLocation(mLatestLocation); - mAdapter = new AttractionAdapter(getActivity(), attractions); - View view = inflater.inflate(R.layout.fragment_main, container, false); - AttractionsRecyclerView recyclerView = - (AttractionsRecyclerView) view.findViewById(android.R.id.list); - recyclerView.setEmptyView(view.findViewById(android.R.id.empty)); - recyclerView.setHasFixedSize(true); - recyclerView.setAdapter(mAdapter); + + View view = inflater.inflate(R.layout.fragment_nearby, container, false); + return view; } - - @Override - public void onResume() { - super.onResume(); - mItemClicked = false; - LocalBroadcastManager.getInstance(getActivity()).registerReceiver( - mBroadcastReceiver, UtilityService.getLocationUpdatedIntentFilter()); - } - - @Override - public void onPause() { - super.onPause(); - LocalBroadcastManager.getInstance(getActivity()).unregisterReceiver(mBroadcastReceiver); - } - - private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() { - @Override - public void onReceive(Context context, Intent intent) { - Location location = - intent.getParcelableExtra(FusedLocationProviderApi.KEY_LOCATION_CHANGED); - if (location != null) { - mLatestLocation = new LatLng(location.getLatitude(), location.getLongitude()); - mAdapter.mAttractionList = loadAttractionsFromLocation(mLatestLocation); - mAdapter.notifyDataSetChanged(); - } - } - }; - - private static List loadAttractionsFromLocation(final LatLng curLatLng) { - //String closestCity = TouristAttractions.getClosestCity(curLatLng); - //if (closestCity != null) { - List attractions = TouristAttractions.get(); - if (curLatLng != null) { - Collections.sort(attractions, - new Comparator() { - @Override - public int compare(Attraction lhs, Attraction rhs) { - double lhsDistance = SphericalUtil.computeDistanceBetween( - lhs.location, curLatLng); - double rhsDistance = SphericalUtil.computeDistanceBetween( - rhs.location, curLatLng); - return (int) (lhsDistance - rhsDistance); - } - } - ); - } - return attractions; - //} - //return null; - } - - private class AttractionAdapter extends RecyclerView.Adapter - implements ItemClickListener { - - public List mAttractionList; - private Context mContext; - - public AttractionAdapter(Context context, List attractions) { - super(); - mContext = context; - mAttractionList = attractions; - } - - @Override - public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - LayoutInflater inflater = LayoutInflater.from(mContext); - View view = inflater.inflate(R.layout.list_row, parent, false); - return new ViewHolder(view, this); - } - - @Override - public void onBindViewHolder(ViewHolder holder, int position) { - Attraction attraction = mAttractionList.get(position); - - holder.mTitleTextView.setText(attraction.name); - holder.mDescriptionTextView.setText(attraction.description); - Glide.with(mContext) - .load(attraction.imageUrl) - .diskCacheStrategy(DiskCacheStrategy.SOURCE) - .placeholder(R.drawable.empty_photo) - .override(mImageSize, mImageSize) - .into(holder.mImageView); - - String distance = - Utils.formatDistanceBetween(mLatestLocation, attraction.location); - if (TextUtils.isEmpty(distance)) { - holder.mOverlayTextView.setVisibility(View.GONE); - } else { - holder.mOverlayTextView.setVisibility(View.VISIBLE); - holder.mOverlayTextView.setText(distance); - } - } - - @Override - public long getItemId(int position) { - return position; - } - - @Override - public int getItemCount() { - return mAttractionList == null ? 0 : mAttractionList.size(); - } - - @Override - public void onItemClick(View view, int position) { - if (!mItemClicked) { - mItemClicked = true; - View heroView = view.findViewById(android.R.id.icon); - DetailActivity.launch( - getActivity(), mAdapter.mAttractionList.get(position).name, heroView); - } - } - } - - private static class ViewHolder extends RecyclerView.ViewHolder - implements View.OnClickListener { - - TextView mTitleTextView; - TextView mDescriptionTextView; - TextView mOverlayTextView; - ImageView mImageView; - ItemClickListener mItemClickListener; - - public ViewHolder(View view, ItemClickListener itemClickListener) { - super(view); - mTitleTextView = (TextView) view.findViewById(android.R.id.text1); - mDescriptionTextView = (TextView) view.findViewById(android.R.id.text2); - mOverlayTextView = (TextView) view.findViewById(R.id.overlaytext); - mImageView = (ImageView) view.findViewById(android.R.id.icon); - mItemClickListener = itemClickListener; - view.setOnClickListener(this); - } - - @Override - public void onClick(View v) { - mItemClickListener.onItemClick(v, getAdapterPosition()); - } - } - - interface ItemClickListener { - void onItemClick(View view, int position); - } } diff --git a/app/src/main/res/layout/fragment_nearby.xml b/app/src/main/res/layout/fragment_nearby.xml new file mode 100644 index 000000000..3509b8411 --- /dev/null +++ b/app/src/main/res/layout/fragment_nearby.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file