diff --git a/app/src/main/java/fr/free/nrw/commons/ViewHolder.java b/app/src/main/java/fr/free/nrw/commons/ViewHolder.java new file mode 100644 index 000000000..7181d85cc --- /dev/null +++ b/app/src/main/java/fr/free/nrw/commons/ViewHolder.java @@ -0,0 +1,7 @@ +package fr.free.nrw.commons; + +import android.content.Context; + +public interface ViewHolder { + void bindModel(Context context, T model); +} diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyAdapter.java b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyAdapter.java new file mode 100644 index 000000000..8e8d42fea --- /dev/null +++ b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyAdapter.java @@ -0,0 +1,45 @@ +package fr.free.nrw.commons.nearby; + +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ArrayAdapter; + +import java.util.List; + +import fr.free.nrw.commons.R; + +public class NearbyAdapter extends ArrayAdapter { + public List placesList; + private Context mContext; + + public NearbyAdapter(Context context, List places) { + super(context, R.layout.item_place, places); + this.mContext = context; + placesList = places; + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + // Get the data item for this position + Place place = getItem(position); + Log.d("NearbyAdapter", "Place " + place.name); + + // Check if an existing view is being reused, otherwise inflate the view + if (convertView == null) { + convertView = LayoutInflater.from(getContext()).inflate(R.layout.item_place, parent, false); + } + + NearbyViewHolder viewHolder = new NearbyViewHolder(convertView); + viewHolder.bindModel(mContext, place); + // Return the completed view to render on screen + return convertView; + } + + @Override + public long getItemId(int position) { + return position; + } +} 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 a858c5318..ea27dbe1e 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 @@ -190,53 +190,6 @@ public class NearbyListFragment extends ListFragment implements TaskListener { } } - private class NearbyAdapter extends ArrayAdapter { - - public List placesList; - private Context mContext; - - public NearbyAdapter(Context context, List places) { - super(context, R.layout.item_place, places); - mContext = context; - placesList = places; - } - - @Override - public View getView(int position, View convertView, ViewGroup parent) { - // Get the data item for this position - Place place = getItem(position); - Log.d(TAG, "Place " + place.name); - - // Check if an existing view is being reused, otherwise inflate the view - if (convertView == null) { - convertView = LayoutInflater.from(getContext()).inflate(R.layout.item_place, parent, false); - } - - // Lookup view for data population - TextView tvName = (TextView) convertView.findViewById(R.id.tvName); - TextView tvDesc = (TextView) convertView.findViewById(R.id.tvDesc); - TextView distance = (TextView) convertView.findViewById(R.id.distance); - ImageView icon = (ImageView) convertView.findViewById(R.id.icon); - - String quotelessName = place.name.replaceAll("^\"|\"$", ""); - - // Populate the data into the template view using the data object - tvName.setText(quotelessName); - tvDesc.setText(place.description); - distance.setText(place.distance); - - icon.setImageResource(ResourceUtils.getDescriptionIcon(place.description)); - - // Return the completed view to render on screen - return convertView; - } - - @Override - public long getItemId(int position) { - return position; - } - } - private List loadAttractionsFromLocation(final LatLng curLatLng) { List places = NearbyPlaces.get(); diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyViewHolder.java b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyViewHolder.java new file mode 100644 index 000000000..1203b9cb0 --- /dev/null +++ b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyViewHolder.java @@ -0,0 +1,35 @@ +package fr.free.nrw.commons.nearby; + +import android.content.Context; +import android.view.View; +import android.widget.ImageView; +import android.widget.TextView; + +import butterknife.BindView; +import butterknife.ButterKnife; +import fr.free.nrw.commons.R; +import fr.free.nrw.commons.ViewHolder; +import fr.free.nrw.commons.utils.ResourceUtils; + +public class NearbyViewHolder implements ViewHolder { + @BindView(R.id.tvName) TextView tvName; + @BindView(R.id.tvDesc) TextView tvDesc; + @BindView(R.id.distance) TextView distance; + @BindView(R.id.icon) ImageView icon; + + public NearbyViewHolder(View view) { + ButterKnife.bind(this, view); + } + + @Override + public void bindModel(Context context, Place place) { + String quotelessName = place.name.replaceAll("^\"|\"$", ""); + + // Populate the data into the template view using the data object + tvName.setText(quotelessName); + tvDesc.setText(place.description); + distance.setText(place.distance); + + icon.setImageResource(ResourceUtils.getDescriptionIcon(place.description)); + } +}