简体   繁体   English

如何在mainActivity而非自定义视图中为gridview单选按钮设置onclick侦听器

[英]How to set onclick listener for gridview radio buttons in mainactivity instead custom view

I want to set onclicklistener for radio buttons in MainActivity , Right now I have onclick in custom view. 我想为MainActivity单选按钮设置onclicklistener ,现在我在自定义视图中具有onclick。

public class ToggleButtonGroupTableLayout  extends TableLayout  implements OnClickListener {

    private static final String TAG = "ToggleButtonGroupTableLayout";
    private RadioButton activeRadioButton;

    /**
     * @param context
     */
    public ToggleButtonGroupTableLayout(Context context) {
        super(context);
        // TODO Auto-generated constructor stub
    }

    /**
     * @param context
     * @param attrs
     */
    public ToggleButtonGroupTableLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void onClick(View v) {
        final RadioButton rb = (RadioButton) v;
        if ( activeRadioButton != null ) {
            activeRadioButton.setChecked(false);
        }
        rb.setChecked(true);
        Toast.makeText(getContext(),rb.getText().toString(), Toast.LENGTH_SHORT).show();
        if(rb.getText().toString().equalsIgnoreCase("Apartment"))
        {


        }

        //radio_button_data(rb.getText().toString());
        activeRadioButton = rb;
    }

}

How can I move onclick listener to MainActivity? 如何将onclick侦听器移至MainActivity?

You can make the custom view in the same class as the main activity and then you can access it easily or you can pass click listener in adapter and over ride OnClick in main activity and perform required actions: 您可以在与主要活动相同的类中创建自定义视图,然后可以轻松访问它,或者可以在适配器中传递Click侦听器并在主要活动中超越OnClick并执行所需的操作:

public class OnItemClickListener implements View.OnClickListener {
    private int position;
    private OnItemClickCallback onItemClickCallback;

    public OnItemClickListener(int position, OnItemClickCallback onItemClickCallback) {
        this.position = position;
        this.onItemClickCallback = onItemClickCallback;
    }

    @Override
    public void onClick(View view) {
        onItemClickCallback.onItemClicked(view, position);
    }

    public interface OnItemClickCallback {
        void onItemClicked(View view, int position);
    }
}

Add this class and pass its object in adpater 添加此类并在adpater中传递其对象

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM