mirror of
https://gitlab.com/oeffi/oeffi.git
synced 2025-07-07 03:58:48 +00:00
StationViewHolder: Fix view holder is holding to network across station re-binds.
This commit is contained in:
parent
b9b4052fe5
commit
94d8c8c033
3 changed files with 9 additions and 16 deletions
|
@ -432,7 +432,7 @@ public class StationsActivity extends OeffiMainActivity implements StationsAware
|
||||||
stationListLayoutManager = new LinearLayoutManager(this);
|
stationListLayoutManager = new LinearLayoutManager(this);
|
||||||
stationList.setLayoutManager(stationListLayoutManager);
|
stationList.setLayoutManager(stationListLayoutManager);
|
||||||
stationList.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL_LIST));
|
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.setAdapter(stationListAdapter);
|
||||||
stationList.addOnScrollListener(new RecyclerView.OnScrollListener() {
|
stationList.addOnScrollListener(new RecyclerView.OnScrollListener() {
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -42,7 +42,6 @@ import de.schildbach.oeffi.stations.QueryDeparturesRunnable;
|
||||||
import de.schildbach.oeffi.stations.Station;
|
import de.schildbach.oeffi.stations.Station;
|
||||||
import de.schildbach.oeffi.stations.StationContextMenu;
|
import de.schildbach.oeffi.stations.StationContextMenu;
|
||||||
import de.schildbach.oeffi.util.Formats;
|
import de.schildbach.oeffi.util.Formats;
|
||||||
import de.schildbach.pte.NetworkId;
|
|
||||||
import de.schildbach.pte.Standard;
|
import de.schildbach.pte.Standard;
|
||||||
import de.schildbach.pte.dto.Departure;
|
import de.schildbach.pte.dto.Departure;
|
||||||
import de.schildbach.pte.dto.Line;
|
import de.schildbach.pte.dto.Line;
|
||||||
|
@ -83,7 +82,6 @@ public class StationViewHolder extends RecyclerView.ViewHolder {
|
||||||
|
|
||||||
private final Context context;
|
private final Context context;
|
||||||
private final Resources res;
|
private final Resources res;
|
||||||
private final NetworkId network;
|
|
||||||
private final int maxDepartures;
|
private final int maxDepartures;
|
||||||
private final StationContextMenuItemListener contextMenuItemListener;
|
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 CONDENSE_LINES_THRESHOLD = 6; // TODO!!!
|
||||||
private static final int MESSAGE_INDEX_COLOR = Color.parseColor("#c08080");
|
private static final int MESSAGE_INDEX_COLOR = Color.parseColor("#c08080");
|
||||||
|
|
||||||
public StationViewHolder(final Context context, final View itemView, final NetworkId network,
|
public StationViewHolder(final Context context, final View itemView, final int maxDepartures,
|
||||||
final int maxDepartures, final StationContextMenuItemListener contextMenuItemListener) {
|
final StationContextMenuItemListener contextMenuItemListener) {
|
||||||
super(itemView);
|
super(itemView);
|
||||||
|
|
||||||
favoriteView = itemView.findViewById(R.id.station_entry_favorite);
|
favoriteView = itemView.findViewById(R.id.station_entry_favorite);
|
||||||
|
@ -114,7 +112,6 @@ public class StationViewHolder extends RecyclerView.ViewHolder {
|
||||||
|
|
||||||
this.context = context;
|
this.context = context;
|
||||||
this.res = context.getResources();
|
this.res = context.getResources();
|
||||||
this.network = network;
|
|
||||||
this.maxDepartures = maxDepartures;
|
this.maxDepartures = maxDepartures;
|
||||||
this.contextMenuItemListener = contextMenuItemListener;
|
this.contextMenuItemListener = contextMenuItemListener;
|
||||||
|
|
||||||
|
@ -191,13 +188,13 @@ public class StationViewHolder extends RecyclerView.ViewHolder {
|
||||||
contextButtonSpace.setVisibility(itemView.isActivated() ? View.VISIBLE : View.GONE);
|
contextButtonSpace.setVisibility(itemView.isActivated() ? View.VISIBLE : View.GONE);
|
||||||
contextButton.setOnClickListener(itemView.isActivated() ? new View.OnClickListener() {
|
contextButton.setOnClickListener(itemView.isActivated() ? new View.OnClickListener() {
|
||||||
public void onClick(final View v) {
|
public void onClick(final View v) {
|
||||||
final PopupMenu contextMenu = new StationContextMenu(context, v, network, station.location, favState,
|
final PopupMenu contextMenu = new StationContextMenu(context, v, station.network, station.location,
|
||||||
true, true, true, true, true);
|
favState, true, true, true, true, true);
|
||||||
contextMenu.setOnMenuItemClickListener(new OnMenuItemClickListener() {
|
contextMenu.setOnMenuItemClickListener(new OnMenuItemClickListener() {
|
||||||
public boolean onMenuItemClick(final MenuItem item) {
|
public boolean onMenuItemClick(final MenuItem item) {
|
||||||
final int position = getAdapterPosition();
|
final int position = getAdapterPosition();
|
||||||
if (position != RecyclerView.NO_POSITION)
|
if (position != RecyclerView.NO_POSITION)
|
||||||
return contextMenuItemListener.onStationContextMenuItemClick(position, network,
|
return contextMenuItemListener.onStationContextMenuItemClick(position, station.network,
|
||||||
station.location, station.departures, item.getItemId());
|
station.location, station.departures, item.getItemId());
|
||||||
else
|
else
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -26,7 +26,6 @@ import de.schildbach.oeffi.R;
|
||||||
import de.schildbach.oeffi.StationsAware;
|
import de.schildbach.oeffi.StationsAware;
|
||||||
import de.schildbach.oeffi.stations.CompassNeedleView;
|
import de.schildbach.oeffi.stations.CompassNeedleView;
|
||||||
import de.schildbach.oeffi.stations.Station;
|
import de.schildbach.oeffi.stations.Station;
|
||||||
import de.schildbach.pte.NetworkId;
|
|
||||||
import de.schildbach.pte.dto.Product;
|
import de.schildbach.pte.dto.Product;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
@ -37,7 +36,6 @@ import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
public class StationsAdapter extends RecyclerView.Adapter<StationViewHolder> implements CompassNeedleView.Callback {
|
public class StationsAdapter extends RecyclerView.Adapter<StationViewHolder> implements CompassNeedleView.Callback {
|
||||||
private final Context context;
|
private final Context context;
|
||||||
private final NetworkId network;
|
|
||||||
private final int maxDepartures;
|
private final int maxDepartures;
|
||||||
private final Set<Product> productsFilter;
|
private final Set<Product> productsFilter;
|
||||||
private final StationContextMenuItemListener contextMenuItemListener;
|
private final StationContextMenuItemListener contextMenuItemListener;
|
||||||
|
@ -50,11 +48,9 @@ public class StationsAdapter extends RecyclerView.Adapter<StationViewHolder> imp
|
||||||
|
|
||||||
private final LayoutInflater inflater;
|
private final LayoutInflater inflater;
|
||||||
|
|
||||||
public StationsAdapter(final Context context, final NetworkId network, final int maxDepartures,
|
public StationsAdapter(final Context context, final int maxDepartures, final Set<Product> productsFilter,
|
||||||
final Set<Product> productsFilter, final StationContextMenuItemListener contextMenuItemListener,
|
final StationContextMenuItemListener contextMenuItemListener, final StationsAware stationsAware) {
|
||||||
final StationsAware stationsAware) {
|
|
||||||
this.context = context;
|
this.context = context;
|
||||||
this.network = network;
|
|
||||||
this.inflater = LayoutInflater.from(context);
|
this.inflater = LayoutInflater.from(context);
|
||||||
this.maxDepartures = maxDepartures;
|
this.maxDepartures = maxDepartures;
|
||||||
this.productsFilter = productsFilter;
|
this.productsFilter = productsFilter;
|
||||||
|
@ -97,7 +93,7 @@ public class StationsAdapter extends RecyclerView.Adapter<StationViewHolder> imp
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public StationViewHolder onCreateViewHolder(final ViewGroup parent, final int viewType) {
|
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);
|
maxDepartures, contextMenuItemListener);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue