Pour la 1er activité du MOOC sur Android il faut un RecyclerView des titres de fausse news et quand on clic sur un titre on accède à la page complète de la news
Je suis bloqué au moment où je dois cliquer sur un titre et accéder à une activité Pour le moment je veux me contenter d'accéder à une autre activité, le passage de paramètre viendra plus tard
Je me suis basé sur le cours et sur des bouts de code sur le forum où les gens disent ça fonctionne (et je les crois car cela me semble juste à mois aussi)
Voici le code entier de l'adapter du recyclerView
package com.example.fgerard.ocr_rss_activite1;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Intent;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
// les imports du .JAR
import com.oc.rss.fake.FakeNews;
import com.oc.rss.fake.FakeNewsList;
// les imports Java
import java.util.List;
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
private final 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.list_cell, parent, false);
return new MyViewHolder(view);
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
FakeNews fk = list.get(position);
holder.display(fk);
}
public class MyViewHolder extends RecyclerView.ViewHolder {
private final TextView newsTitel;
private FakeNews currentNews;
private Activity activity;
public MyViewHolder(final View itemView) {
super(itemView);
newsTitel = ((TextView) itemView.findViewById(R.id.newsTitel));
// l'action de cliquer sur le titre
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(itemView.getContext(), MyWebViewActivity.class);
activity.startActivity(intent);
}
});
}
public void display(FakeNews fk) {
currentNews = fk;
newsTitel.setText(fk.title);
}
}
}
Le soucis (quand je me base sur le TP lancé les dès) c'est que ne je peux pas exetends Activity vue qu'on extends déjà autre chose
une solution que j'ai vue est de juste faire un private Activity activity
le code en soit ne rougit pas, mais bien sur faut pas se fier à ca, quand je lance l'application et que je clic sur un titre, ça plante et puis c'est tout
Voici le logcat:
11 12:19:11.468 15363-15363/com.example.fgerard.ocr_rss_activite1 D/AndroidRuntime: Shutting down VM 08-11 12:19:11.469 15363-15363/com.example.fgerard.ocr_rss_activite1 E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.fgerard.ocr_rss_activite1, PID: 15363 java.lang.NullPointerException: Attempt to invoke virtual method 'android.app.ActivityThread$ApplicationThread android.app.ActivityThread.getApplicationThread()' on a null object reference at android.app.Activity.startActivityForResult(Activity.java:3745) at android.app.Activity.startActivityForResult(Activity.java:3706) at android.app.Activity.startActivity(Activity.java:4016) at android.app.Activity.startActivity(Activity.java:3984) at com.example.fgerard.ocr_rss_activite1.MyAdapter$MyViewHolder$1.onClick(MyAdapter.java:54) at android.view.View.performClick(View.java:4780) at android.view.View$PerformClick.run(View.java:19866) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5257) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
De mon coté je continue mes recherches (trois heures que je suis bloqué sur ça hors que je suis sur que c'est une connerie xD)
Il faut que tu lui affectes la valeur de l'activité qui porte ta liste. Il faut donc que tu fasses transiter une référence de ton activité à ton adapter puis à ton ViewHolder.
Il faut que tu lui affectes la valeur de l'activité qui porte ta liste.
l'activité qui porte ma liste? MainActivity donc vue que c'est sur MainActivity que ma liste s'affiche? je t'avoue ne pas savoir te suivre
edit:
problème résolu (pour le moment :p)
merci, tu m'as bien guidé (et moi j'étais parti tellement loin...)
par contre je me permet de pas encore mettre le sujet en tant que résolu car j'aurais peut être des soucis plus tard xD
je mettrais en résolu une fois l'activité réalisé ^^"
- Edité par kingdomflo 11 août 2016 à 15:08:44
[Andoird] Soucis 1er activité du MOOC Android
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Mon site - Mon livre sur le XML - Mon blog
Mon site - Mon livre sur le XML - Mon blog