-1
votes

RecyclerView sur l'élément cliquez sur Démarre la mauvaise activité

Je suis nouveau à Android et essayé de démarrer une nouvelle activité lorsque l'élément RECYCLERVIEW est cliqué. Après avoir cliqué sur l'élément, Toast apparaît et redirige vers MainActivity , mais je dois rediriger sur userAdvertiMactivité . Où je me trompe?

code provient de useradAdvertimentlistactivité : xxx

fenêtre d'exécution: xxx

Je peux ajouter un autre code. Laissez-moi savoir à ce sujet si c'est nécessaire!


11 commentaires

Pouvez-vous me montrer comment vous attribuez la valeur McTontext?


Y a-t-il une classe d'adaptateur ou pas?


@icantc contexte context = rootview.getContext () et mcontext = contexte


@JIMALEABDI Classe que étend RecyclerView.adapter ? J'ai un tel adaptateur pour recyclerview liste.


Reportez-vous à Ceci


Êtes-vous sûr que son ouverture MainAlactivité ? Avez-vous éventuellement utilisé la mauvaise mise en page dans useradAnadvertiMactivité 's setContentView () ?


@ M.HAPPY pouvez-vous modifier votre ligne pour mcontext comme ceci, contexte mcontext = ceci , j'espère que votre userAdvertSactivité étend Activité au moins à un niveau de la hiérarchie.


@icantc si userAdvertSactimationListActivity étend fragment ?


@Mikem. SetContentView () Layout n'est pas incorrect dans UserAdvertiMactositemactivité . Édité ma question, vérifiez la réponse de exécuter fenêtre


Eh bien, un startactivité () L'appel ne va pas simplement lancer la mauvaise activité classe classe par erreur. Êtes-vous sûr que vous regardez le bon code? Est-ce exactement comme vous l'exécutez maintenant? Démarrez-vous MainActivity N'importe où dans UserAdververtiMactivité ?


@Mikem. Merci à tous pour l'aide et désolé, c'est mon erreur dans UserAdvertiMactemactivité . Je vérifie cette activité si l'utilisateur est connecté et il est renvoyé faux c'est pourquoi l'application me redirigea sur MainActivity . Qu'est-ce que je devrais faire maintenant avec la question et la bonne réponse?


3 Réponses :


0
votes

Il y a beaucoup de moyen de faire cela ...

Suivez les étapes ci-dessous s'il vous plaît: p>

Premier) strong> Construire une interface publique à l'intérieur de votre adaptateur, puis faites un privé Exemple pour celui-ci p>

deuxième) strong> Utilisez SETONClickListener pour votre élément de vue de la vue Inside ONBindview Thirlder Méthode de votre adaptateur et appelez l'une des méthodes d'interface P>

Troisième) FORT> Allez à la mainActivité et implémentez l'interface que nous avons créée dans la première étape, puis vous devriez remplacer les méthodes d'interface en maigrette, puis utilisez le démarrage. p>

première étape forte> p > xxx pré>

deuxième étape strong> p>

   public class MainActivity extends AppCompatActivity implements YourAdapter.AdapterCallback{
    @Override
    public void onClickCallback(UserAdvertisementListObject advertisementList) {
        Intent intent = new Intent(MainActivity.this, UserAdvertisementItemActivity.class);
        intent.putExtra("from_city", advertisementList.getFromCity());
        intent.putExtra("to_city", advertisementList.getToCity());
        intent.putExtra("number_of_places", advertisementList.getNumberOfPlaces());
        intent.putExtra("price", advertisementList.getPrice());
        intent.putExtra("datetime", advertisementList.getDatetime());
        intent.putExtra("info", advertisementList.getInfo());
        startActivity(intent);
    }
}


2 commentaires

Qu'est-ce que Youritem dans la deuxième étape de la vue Viewholder.Youritem.setonClickListener ?


C'est une autre question et je vais répondre dans une autre réponse



0
votes

Merci à tous pour l'aide et désolé. Ceci est mon erreur dans UserAdvertiMactivité . Je vérifie cette activité si l'utilisateur est connecté et il est renvoyé faux. C'est pourquoi l'application m'a redirigé vers MainAlactivité . Autre code travaille bien.


1 commentaires

Si c'est possible, choisissez votre réponse comme bonne réponse, merci



0
votes

Voici une réponse:

public class YourAdapter extends RecyclerView.Adapter<YourAdapter.ViewHolder> {

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.yourView , viewGroup , false);
        return new YourAdapter.ViewHolder(view);
    }
    //...

    class ViewHolder extends RecyclerView.ViewHolder{

        private TextView YourItem; // assuming that YourItem is a TextView


        public ViewHolder(@NonNull View itemView) {
            super(itemView);

            YourItem= itemView.findViewById(R.id.YourItemId);//  it is an item in the layout that you defined in onCreateViewHolder method


        }


    }
}


1 commentaires

J'espère que cela pourrait être utile