getView()内的Toast无法识别上下文

时间:2017-01-17 10:48:30

标签: android

我有一个包含3个按钮的自定义列表项。我想在点击一个按钮时显示一个祝酒词,但我对上下文有点失落。 这是我的代码:

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;
}

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:2)

使用getContext()代替getApplicationContext()。

getContext()方法在ArrayAdapter类中可用。 getApplicationContext()课程中可以使用Activity

答案 1 :(得分:1)

使用视图上下文:

btnOne.setOnClickListener(
            new Button.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Toast.makeText(v.getContext(), "Msg to show up", Toast.LENGTH_SHORT).show();
                    }
                }
        );