Использовать прослушиватель событий с контекстом из другого класса android - PullRequest
1 голос
/ 13 июля 2020

Я пытаюсь использовать этот Searchview класс, который запускается, когда searchview сворачивается или расширяется. Поскольку я относительно новичок в программировании, я действительно не понимаю, как использовать класс searchview в моем классе MainActivity. Я пробовал это, но следующее Toast не отображалось:

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

}

Кто-нибудь может мне помочь? Любая помощь приветствуется!

1 Ответ

2 голосов
/ 14 июля 2020

Вы можете добавить MySeachView прямо в свой макет

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

и получить его, используя findViewById (R.id.my_search_view) в своей MainActivity.

На этом вы можете установить свой слушатель .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...