J'ai un élément de liste personnalisé qui se compose de 3 boutons. Je veux montrer un toast lorsqu'un bouton est cliqué, mais je suis un peu perdu avec les contextes. Voici mon code:

public class ButtonAdapter extends ArrayAdapter<ButtonClass> {

    public ButtonAdapter(Activity context, ArrayList<ButtonClass> buttonList) {
        super(context, 0, buttonList);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View listItemView = convertView;
        if(listItemView == null) {
            listItemView = LayoutInflater.from(getContext()).inflate(
                    R.layout.button_list_item, parent, false);
        }

        ButtonClass currentButton = getItem(position);

        Button btnOne = (Button) listItemView.findViewById(R.id.buttonOne);
        btnOne.setText(currentButton.getBtnOneString());

        btnOne.setOnClickListener(
                new Button.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        // doesn't recognize the getApplicationContext() method ?!
                        Toast toast = Toast.makeText(getApplicationContext(), "Msg to show up", Toast.LENGTH_SHORT).show();
                    }
                }
        );

        // the same thing for the other two buttons  ...

        return listItemView;
}

Est-ce que quelqu'un peut m'aider?

0
Pavle Joksović 17 janv. 2017 à 13:48

2 réponses

Meilleure réponse

Utilisez getContext () au lieu de getApplicationContext ().

Méthode getContext () disponible dans la classe ArrayAdapter. tandis que getApplicationContext () est disponible dans votre Classe d'activité.

2
Dhaval Patel 17 janv. 2017 à 10:56

Utiliser le contexte de vue:

btnOne.setOnClickListener(
            new Button.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Toast.makeText(v.getContext(), "Msg to show up", Toast.LENGTH_SHORT).show();
                    }
                }
        );
1
Kamil Seweryn 17 janv. 2017 à 10:54