Bonjour. Je suis nouveau dans ce forum. Je développe en Java Android une liste d'articles (1 String titre + 1 WebView contenu par article) de nouvelles humoristiques au sein d'une RecyclerView. Lorsqu'on clique sur un titre, la 2e Activity "LectureContenu" doit démarrer pour lire le contenu de l'article sous forme d'une WebView : le problème est que mon IDE ne reconnaît pas mon paramètre "intent" dans mon instruction "startActivity". Par contre, quand je teste avec une simple AlertDialog qui s'affiche au lieu d'une 2e Activity qui démarre, là mon programme fonctionne.
Voici le code de mon Adapter de RecyclerView qui fonctionne (simple AlertDialog qui s'affiche quand on clique sur un titre d'article) :
Et voici le code de mon Adapter de ma RecyclerView qui ne fonctionne pas (tentative de démarrage de la 2e Activity "LectureContenu") :
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 package com.lolocompany.newsreader; import android.app.AlertDialog; import android.content.Context; import android.content.Intent; import android.support.v4.app.ShareCompat; import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.RecyclerView; import android.util.Pair; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.webkit.WebView; import android.widget.TextView; import android.widget.Toast; import com.oc.rss.fake.FakeNews; import com.oc.rss.fake.FakeNewsList; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import javax.xml.parsers.DocumentBuilderFactory; import static android.support.v4.content.ContextCompat.createDeviceProtectedStorageContext; import static android.support.v4.content.ContextCompat.startActivity; //REESSAYER APRES ABLATION DE ELLIPSIZE public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> { //FAKENEWSLIST ICI : List<FakeNews> list= FakeNewsList.all; @Override public int getItemCount(){ return list.size(); } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType){ LayoutInflater inflater=LayoutInflater.from(parent.getContext()); View view=inflater.inflate(R.layout.liste_cellules, parent, false); return new MyViewHolder(view); } @Override public void onBindViewHolder(MyViewHolder holder, int position){ FakeNews pair=list.get(position); holder.display(pair); } public class MyViewHolder extends RecyclerView.ViewHolder{ String retourFakeNews=FakeNews.class.toString(); //TITLE ET HTMLCONTENT DE FAKENEWS ICI String titre_string=FakeNews.class.toString(); private final TextView titre_article; private final WebView contenu_article; private FakeNews currentFakeNews; private String currentTitreString; public MyViewHolder(final View itemView){ super(itemView); titre_article=(TextView) itemView.findViewById(R.id.titre_article); contenu_article=(WebView) itemView.findViewById(R.id.contenu_article); itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { new AlertDialog.Builder(itemView.getContext()) .setTitle(currentTitreString) .setMessage("Webview ici") .show(); } }); } public void display(FakeNews pair){ currentFakeNews=pair; titre_article.setText(pair.title); } } }
Est-ce un problème de contexte et d'un mauvais "startActivity" utilisé ? Lorsque j'ai utilisé des Intent et des startActivity ailleurs que dans des Adapter de RecyclerView, je n'avais pas de problèmes. Merci beaucoup pour vos réponses.
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 package com.lolocompany.newsreader; import android.app.AlertDialog; import android.content.Context; import android.content.Intent; import android.support.v4.app.ShareCompat; import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.RecyclerView; import android.util.Pair; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.webkit.WebView; import android.widget.TextView; import android.widget.Toast; import com.oc.rss.fake.FakeNews; import com.oc.rss.fake.FakeNewsList; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import javax.xml.parsers.DocumentBuilderFactory; import static android.support.v4.content.ContextCompat.createDeviceProtectedStorageContext; import static android.support.v4.content.ContextCompat.startActivity; public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> { //FAKENEWSLIST ICI : List<FakeNews> list= FakeNewsList.all; @Override public int getItemCount(){ return list.size(); } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType){ LayoutInflater inflater=LayoutInflater.from(parent.getContext()); View view=inflater.inflate(R.layout.liste_cellules, parent, false); return new MyViewHolder(view); } @Override public void onBindViewHolder(MyViewHolder holder, int position){ FakeNews pair=list.get(position); holder.display(pair); } public class MyViewHolder extends RecyclerView.ViewHolder{ //FAUT-IL DEES GETTERS POUR TITLE ET HTMLCONTENT DE FAKENEWS.CLASS ?? String retourFakeNews=FakeNews.class.toString(); //TITLE ET HTMLCONTENT DE FAKENEWS ICI !! String titre_string=FakeNews.class.toString(); private final TextView titre_article; private final WebView contenu_article; private FakeNews currentFakeNews; //private Pair<FakeNews, FakeNews> currentPair; private String currentTitreString; public MyViewHolder(final View itemView){ super(itemView); titre_article=(TextView) itemView.findViewById(R.id.titre_article); contenu_article=(WebView) itemView.findViewById(R.id.contenu_article); itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //C'EST ICI QUE CA SE GATE !!! Intent intent=new Intent(itemView.getContext(), LectureContenu.class); startActivity(intent); } }); } public void display(FakeNews pair){ currentFakeNews=pair; titre_article.setText(pair.title); } } }
Partager