Search code examples
androidmethodssearchviewevent-listener

Use event listener with context from other class android


I'm trying to use this Searchview Class that gets executed when the searchview collapses or expands. Since I'm relatively new to programming, I don't really understand how to use the searchview class in my MainActivity class. I have tried this, but the following Toast didn't get shown:

MainActivity.java:

MySearchView mySearchView = new MySearchView(searchView.getContext());  // I think the problem is in this line...

        mySearchView.setOnSearchViewCollapsedEventListener(new MySearchView.OnSearchViewCollapsedEventListener() {
            @Override
            public void onSearchViewCollapsed() {
                Toast.makeText(MainActivity.this, "YES, IT'S WORKING", Toast.LENGTH_SHORT).show();
            }
        }); 

MySearchView.java:

 public class MySearchView extends SearchView {
    
        OnSearchViewCollapsedEventListener mSearchViewCollapsedEventListener;
        OnSearchViewExpandedEventListener mOnSearchViewExpandedEventListener;
    
        public MySearchView(Context context) {
            super(context);
        }
    
        @Override
        public void onActionViewCollapsed() {
            if (mSearchViewCollapsedEventListener != null)
                mSearchViewCollapsedEventListener.onSearchViewCollapsed();
            super.onActionViewCollapsed();
        }
    
        @Override
        public void onActionViewExpanded() {
            if (mOnSearchViewExpandedEventListener != null)
                mOnSearchViewExpandedEventListener.onSearchViewExpanded();
            super.onActionViewExpanded();
        }
    
        public interface OnSearchViewCollapsedEventListener {
            public void onSearchViewCollapsed();
        }
    
        public interface OnSearchViewExpandedEventListener {
            public void onSearchViewExpanded();
        }
    
        public void setOnSearchViewCollapsedEventListener(OnSearchViewCollapsedEventListener eventListener) {
            mSearchViewCollapsedEventListener = eventListener;
        }
    
        public void setOnSearchViewExpandedEventListener(OnSearchViewExpandedEventListener eventListener) {
            mOnSearchViewExpandedEventListener = eventListener;
        }

}

Could somebody help me out ? Any help is appreciated!


Solution

  • You can add MySeachView directly into your layout

    <your.package.name.MySearchView
        android:id="@+id/my_search_view"
    ...
    />
    </your.package.name.MySearchView>
    

    and get it by using findViewById(R.id.my_search_view) in your MainActivity.

    On this you can set your listener.