When the device change network the list data retrieved fro sql server disappears, if I close application and login again the data appear.
public class MesaAdapter extends Adapter<MesaViewHolder> implements OnClickListener, OnLongClickListener {
//region Variáveis
private int posicaoSelecionada = -1;
private WeakReference<Activity> activityWeakReference;
private WeakReference<OnSelectedMesaListener> listenerWeakReference;
private List<Mesa> mesas;
//endregion
//region Construtor
public MesaAdapter(List<Mesa> mesas, Activity activity, OnSelectedMesaListener listener) {
this.mesas = mesas;
this.activityWeakReference = new WeakReference<>(activity);
this.listenerWeakReference = new WeakReference<>(listener);
}
//endregion
//region Adapter
@NonNull
@Override
public MesaViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
Context context = parent.getContext();
View itemView = LayoutInflater.from(context).inflate(R.layout.item_mesa, parent, false);
itemView.setOnClickListener(this);
itemView.setOnLongClickListener(this);
Activity activity = activityWeakReference.get();
if (activity != null) {
activity.registerForContextMenu(itemView);
}
return new MesaViewHolder(itemView);
}
@Override
public void onBindViewHolder(@NonNull MesaViewHolder holder, int position) {
holder.itemView.setTag(position);
Mesa mesa = mesas.get(position);
holder.configurarMesa(mesa);
}
Handle network state changes When the network state changes, such as when the Wi-Fi network changes, your app should react accordingly. If the network is available, you can continue fetching data or updating the RecyclerView. If the network is unavailable, you can display cached data or show a message indicating that the app is offline.
You can try like this
// Register the network change receiver
private void registerNetworkChangeReceiver(Activity activity) {
networkChangeReceiver = new NetworkChangeReceiver();
activity.registerReceiver(networkChangeReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
}
// Unregister the network change receiver
private void unregisterNetworkChangeReceiver(Activity activity) {
if (networkChangeReceiver != null) {
try {
activity.unregisterReceiver(networkChangeReceiver);
} catch (IllegalArgumentException e) {
Log.e("MesaAdapter", "Exception while unregistering NetworkChangeReceiver: " + e.getMessage());
}
}
}
// Network state change receiver
private class NetworkChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
boolean isNetworkConnected = activeNetworkInfo != null && activeNetworkInfo.isConnected();
if (isNetworkConnected && !isNetworkAvailable) {
// Network connection is restored
isNetworkAvailable = true;
// Handle data refresh or retrieval here
// ...
} else if (!isNetworkConnected && isNetworkAvailable) {
// Network connection is lost
isNetworkAvailable = false;
// Display offline data or show a message indicating no network
// ...
}
}
}
}
// Clean up resources
public void onDestroy(Activity activity) {
unregisterNetworkChangeReceiver(activity);
}
}
I just hope it's work for you