Bonjour, espérant que vous allez bien

J'ai un fragment qui affiche un recycler view (les éléments sont retirés d'une base de données SQLITE), dans cette liste l'utilisateur a la possibilité de retirer (supprimer) un élément de la liste.
Ce que je veux faire c'est que lorsque l'utilisateur supprime tous les éléments, j'affiche une image ou bien un texte view indiquant que la liste est vide.

Voilà le code du RecyclerView
Cette condition en dessous, dans la méthode on click() permet seulement de vérifier si un élément existe dans la base de données "favorite" avant de l'ajouter
MajdoubeDAO.CheckIsDataAlreadyInDBorNot(favorites.get(mIndex).getId_poetry())
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
import android.animation.ArgbEvaluator;
import android.animation.ValueAnimator;
import android.content.Context;
import android.graphics.Color;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
 
import android.widget.TextView;
import android.widget.Toast;
 
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
 
import com.example.majdoub_roubayette.Contrellers.fragment.PreferedFragment;
import com.example.majdoub_roubayette.Models.MajdoubeDAO;
import com.example.majdoub_roubayette.Models.beans.Poetry;
import com.example.majdoub_roubayette.R;
 
import java.util.ArrayList;
 
import static androidx.constraintlayout.widget.Constraints.TAG;
 
public class FavoriteAdapter extends RecyclerView.Adapter {
 
    ArrayList<Poetry> favorites;
    Context context;
    private final PreferedFragment.OnPoetryFavItemSelectedInterface mListner;
 
    //Color
    int whiteColor = Color.rgb(255, 255, 255);
    int yellowColor = Color.rgb(255, 239, 59);
 
 
 
    public FavoriteAdapter(Context context, ArrayList<Poetry> poetryArrayListStar, PreferedFragment.OnPoetryFavItemSelectedInterface mListner) {
        this.context = context;
        this.favorites = poetryArrayListStar;
        this.mListner = mListner;
    }
 
 
    @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
 
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_list_view, parent, false);
        return new ListViewHolder(view);
 
    }
 
    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
 
        ((ListViewHolder) holder).bindView(position);
    }
 
    @Override
    public int getItemCount() {
        if (favorites == null) {
            return 0;
        } else {
            return favorites.size();
        }
    }
 
 
    private class ListViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
 
        TextView line1, line2, line3, line4;
        LinearLayout roubayeteHeader;
        ImageView startButton, shareButton, copyButton;
        private int mIndex;
 
 
        public ListViewHolder(@NonNull View itemView) {
            super(itemView);
 
            roubayeteHeader = itemView.findViewById(R.id.roubayeteHeader);
            startButton = itemView.findViewById(R.id.startButton);
            shareButton = itemView.findViewById(R.id.shareButton);
            copyButton = itemView.findViewById(R.id.copyButton);
            line1 = itemView.findViewById(R.id.line1);
            line2 = itemView.findViewById(R.id.line2);
            line3 = itemView.findViewById(R.id.line3);
            line4 = itemView.findViewById(R.id.line4);
 
 
            roubayeteHeader.setOnClickListener(this);
            startButton.setOnClickListener(this);
            shareButton.setOnClickListener(this);
            copyButton.setOnClickListener(this);
        }
 
        public void bindView(int position) {
 
            line1.setText(favorites.get(position).getLine1_poetry());
            line2.setText(favorites.get(position).getLine2_poetry());
            line3.setText(favorites.get(position).getLine3_poetry());
            line4.setText(favorites.get(position).getLine4_poetry());
 
            //pour changer la couleur de l'icon star en jaune
            if (MajdoubeDAO.CheckIsDataAlreadyInDBorNot(favorites.get(position).getId_poetry())) {
                startButton.setColorFilter(yellowColor);
                Log.i(TAG, "LisViewHolder: Add to favorite " + mIndex);
            } else {
                startButton.setColorFilter(whiteColor);
                Log.i(TAG, "LisViewHolder: Removed from favorite " + mIndex);
            }
 
            mIndex = position;
 
        }
 
        public void onClick(View view) {
            int id = view.getId();
 
            if (id == roubayeteHeader.getId()) {
                Toast.makeText(context, "Clicked", Toast.LENGTH_SHORT).show();
                mListner.onListPoetrySelected(mIndex);
 
            } else if (id == startButton.getId()) {
 
 
                if (MajdoubeDAO.CheckIsDataAlreadyInDBorNot(favorites.get(mIndex).getId_poetry())) {
                    Toast.makeText(context, "Removed From Stars", Toast.LENGTH_SHORT).show();
                    startButton.setColorFilter(whiteColor);
                    MajdoubeDAO.removeFromFavorite(favorites.get(mIndex).getId_poetry());
                    favorites.remove(mIndex);
                    notifyItemRemoved(mIndex);
                    notifyItemRangeChanged(mIndex, favorites.size());
 
 
                } else {
                    Toast.makeText(context, "Added To Favorite", Toast.LENGTH_SHORT).show();
                    startButton.setColorFilter(yellowColor);
                    MajdoubeDAO.insertToFavorite(favorites.get(mIndex).getId_poetry());
                }
 
            } else if (id == shareButton.getId()) {
                Toast.makeText(context, "share", Toast.LENGTH_SHORT).show();
 
            } else if (id == copyButton.getId()) {
                Toast.makeText(context, "Text Copied", Toast.LENGTH_SHORT).show();
 
            }
        }
 
    }
 
}

Ce Code c'est Pour recyclerView Layout "prefered_fragment.xml"

Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".Contrellers.fragment.PreferedFragment">
 
    <androidx.recyclerview.widget.RecyclerView
        android:visibility="visible"
        android:id="@+id/PoetryFavoritelistRecyclerView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:clipToPadding="false"
        android:paddingTop="25dp" />
 
 
<RelativeLayout
    android:visibility="gone"
    android:id="@+id/noData"
    android:layout_gravity="center"
    android:gravity="center"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
 
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="25sp"
        android:text="NO DATA"/>
 
</RelativeLayout>
 
</FrameLayout>

et ce dernier c'est pour le fragment "PreferedFragment "

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.RelativeLayout;
import android.widget.Toast;
 
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
 
import com.example.majdoub_roubayette.Adapter.FavoriteAdapter;
import com.example.majdoub_roubayette.Models.MajdoubeDAO;
import com.example.majdoub_roubayette.Models.beans.Poetry;
import com.example.majdoub_roubayette.R;
 
import java.util.ArrayList;
 
/**
 * A simple {@link Fragment} subclass.
 */
public class PreferedFragment extends Fragment {
 
    RelativeLayout noData;
    RecyclerView recyclerView;
    int index;
    private ArrayList<Poetry> poetryArrayListStar;
 
    public static PreferedFragment newInstance() {
        return (new PreferedFragment());
    }
 
 
    public interface OnPoetryFavItemSelectedInterface {
 
        void onListPoetrySelected(int index);
    }
 
 
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
 
 
        OnPoetryFavItemSelectedInterface mListner = (OnPoetryFavItemSelectedInterface) getActivity();
 
 
        // Inflate the layout for this fragment
        View view = inflater.inflate(R.layout.prefered_fragment, container, false);
 
        noData = view.findViewById(R.id.noData);
 
 
        poetryArrayListStar = MajdoubeDAO.getFavorites();
 
        recyclerView = view.findViewById(R.id.PoetryFavoritelistRecyclerView);
 
 
        FavoriteAdapter favoriteAdapter = new FavoriteAdapter(getContext(), poetryArrayListStar, mListner);
        recyclerView.setAdapter(favoriteAdapter);
        RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getActivity());
        recyclerView.setLayoutManager(layoutManager);
 
 
        return view;
    }
 
 
    @Override
    public void onSaveInstanceState(@NonNull Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putInt("INDEX", index);
    }
 
    @Override
    public void onResume() {
        super.onResume();
        if (poetryArrayListStar.isEmpty()) {
            //noData=view.findViewById(R.id.noData);
            recyclerView.setVisibility(View.GONE);
            noData.setVisibility(View.VISIBLE);
            Toast.makeText(getActivity(), "no data", Toast.LENGTH_SHORT).show();
        }
 
    }
}
Le code dans onResume () permet de tester si la liste des favoris est vide, si c'est le cas j'affiche le texte indiquant que la liste est vide ; mais le problème c'est que le texte s'affiche dés que je quitte l'application vais vers MainActivity et après retourne vers ce fragment dans ce cas le texte s'affiche bien ==> n'est pas immédiat.

Ce que je veux réaliser, c'est lorsqu'on supprime tous les éléments on affiche la vue vide immediatly.

Merci, en attendant avec impatience.

Nom : tempsnip.png
Affichages : 530
Taille : 37,9 Ko