StationViewHolder: Fix view holder is holding to network across station re-binds.

This commit is contained in:
Andreas Schildbach 2018-11-13 12:01:17 +01:00
parent b9b4052fe5
commit 94d8c8c033
3 changed files with 9 additions and 16 deletions

View file

@ -432,7 +432,7 @@ public class StationsActivity extends OeffiMainActivity implements StationsAware
stationListLayoutManager = new LinearLayoutManager(this);
stationList.setLayoutManager(stationListLayoutManager);
stationList.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL_LIST));
stationListAdapter = new StationsAdapter(this, network, maxDeparturesPerStation, products, this, this);
stationListAdapter = new StationsAdapter(this, maxDeparturesPerStation, products, this, this);
stationList.setAdapter(stationListAdapter);
stationList.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override

View file

@ -42,7 +42,6 @@ import de.schildbach.oeffi.stations.QueryDeparturesRunnable;
import de.schildbach.oeffi.stations.Station;
import de.schildbach.oeffi.stations.StationContextMenu;
import de.schildbach.oeffi.util.Formats;
import de.schildbach.pte.NetworkId;
import de.schildbach.pte.Standard;
import de.schildbach.pte.dto.Departure;
import de.schildbach.pte.dto.Line;
@ -83,7 +82,6 @@ public class StationViewHolder extends RecyclerView.ViewHolder {
private final Context context;
private final Resources res;
private final NetworkId network;
private final int maxDepartures;
private final StationContextMenuItemListener contextMenuItemListener;
@ -96,8 +94,8 @@ public class StationViewHolder extends RecyclerView.ViewHolder {
private static final int CONDENSE_LINES_THRESHOLD = 6; // TODO!!!
private static final int MESSAGE_INDEX_COLOR = Color.parseColor("#c08080");
public StationViewHolder(final Context context, final View itemView, final NetworkId network,
final int maxDepartures, final StationContextMenuItemListener contextMenuItemListener) {
public StationViewHolder(final Context context, final View itemView, final int maxDepartures,
final StationContextMenuItemListener contextMenuItemListener) {
super(itemView);
favoriteView = itemView.findViewById(R.id.station_entry_favorite);
@ -114,7 +112,6 @@ public class StationViewHolder extends RecyclerView.ViewHolder {
this.context = context;
this.res = context.getResources();
this.network = network;
this.maxDepartures = maxDepartures;
this.contextMenuItemListener = contextMenuItemListener;
@ -191,13 +188,13 @@ public class StationViewHolder extends RecyclerView.ViewHolder {
contextButtonSpace.setVisibility(itemView.isActivated() ? View.VISIBLE : View.GONE);
contextButton.setOnClickListener(itemView.isActivated() ? new View.OnClickListener() {
public void onClick(final View v) {
final PopupMenu contextMenu = new StationContextMenu(context, v, network, station.location, favState,
true, true, true, true, true);
final PopupMenu contextMenu = new StationContextMenu(context, v, station.network, station.location,
favState, true, true, true, true, true);
contextMenu.setOnMenuItemClickListener(new OnMenuItemClickListener() {
public boolean onMenuItemClick(final MenuItem item) {
final int position = getAdapterPosition();
if (position != RecyclerView.NO_POSITION)
return contextMenuItemListener.onStationContextMenuItemClick(position, network,
return contextMenuItemListener.onStationContextMenuItemClick(position, station.network,
station.location, station.departures, item.getItemId());
else
return false;

View file

@ -26,7 +26,6 @@ import de.schildbach.oeffi.R;
import de.schildbach.oeffi.StationsAware;
import de.schildbach.oeffi.stations.CompassNeedleView;
import de.schildbach.oeffi.stations.Station;
import de.schildbach.pte.NetworkId;
import de.schildbach.pte.dto.Product;
import android.content.Context;
@ -37,7 +36,6 @@ import androidx.recyclerview.widget.RecyclerView;
public class StationsAdapter extends RecyclerView.Adapter<StationViewHolder> implements CompassNeedleView.Callback {
private final Context context;
private final NetworkId network;
private final int maxDepartures;
private final Set<Product> productsFilter;
private final StationContextMenuItemListener contextMenuItemListener;
@ -50,11 +48,9 @@ public class StationsAdapter extends RecyclerView.Adapter<StationViewHolder> imp
private final LayoutInflater inflater;
public StationsAdapter(final Context context, final NetworkId network, final int maxDepartures,
final Set<Product> productsFilter, final StationContextMenuItemListener contextMenuItemListener,
final StationsAware stationsAware) {
public StationsAdapter(final Context context, final int maxDepartures, final Set<Product> productsFilter,
final StationContextMenuItemListener contextMenuItemListener, final StationsAware stationsAware) {
this.context = context;
this.network = network;
this.inflater = LayoutInflater.from(context);
this.maxDepartures = maxDepartures;
this.productsFilter = productsFilter;
@ -97,7 +93,7 @@ public class StationsAdapter extends RecyclerView.Adapter<StationViewHolder> imp
@Override
public StationViewHolder onCreateViewHolder(final ViewGroup parent, final int viewType) {
return new StationViewHolder(context, inflater.inflate(R.layout.stations_station_entry, parent, false), network,
return new StationViewHolder(context, inflater.inflate(R.layout.stations_station_entry, parent, false),
maxDepartures, contextMenuItemListener);
}