How to create our own Listener interface in android?

前端 未结 9 2098
不知归路
不知归路 2020-11-22 04:55

Could someone help me to create user defined listener interface with some code snippets?

9条回答
  •  一个人的身影
    2020-11-22 05:29

    There are 4 steps:

    1.create interface class (listener)

    2.use interface in view 1 (define variable)

    3.implements interface to view 2 (view 1 used in view 2)

    4.pass interface in view 1 to view 2

    Example:

    Step 1: you need create interface and definde function

    public interface onAddTextViewCustomListener {
        void onAddText(String text);
    }
    

    Step 2: use this interface in view

    public class CTextView extends TextView {
    
    
        onAddTextViewCustomListener onAddTextViewCustomListener; //listener custom
    
        public CTextView(Context context, onAddTextViewCustomListener onAddTextViewCustomListener) {
            super(context);
            this.onAddTextViewCustomListener = onAddTextViewCustomListener;
            init(context, null);
        }
    
        public CTextView(Context context, @Nullable AttributeSet attrs) {
            super(context, attrs);
            init(context, attrs);
        }
    
        public CTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
            init(context, attrs);
        }
    
        @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
        public CTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {
            super(context, attrs, defStyleAttr, defStyleRes);
            init(context, attrs);
        }
    
        public void init(Context context, @Nullable AttributeSet attrs) {
    
            if (isInEditMode())
                return;
    
            //call listener
            onAddTextViewCustomListener.onAddText("this TextView added");
        }
    }
    

    Step 3,4: implements to activity

    public class MainActivity extends AppCompatActivity implements onAddTextViewCustomListener {
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            //get main view from layout
            RelativeLayout mainView = (RelativeLayout)findViewById(R.id.mainView);
    
            //create new CTextView and set listener
            CTextView cTextView = new CTextView(getApplicationContext(), this);
    
            //add cTextView to mainView
            mainView.addView(cTextView);
        }
    
        @Override
        public void onAddText(String text) {
            Log.i("Message ", text);
        }
    }
    

提交回复
热议问题