放入 onClickListener 时,实时数据观察器中的所有者参数是什么?

What is the owner parameter in the live data observer when put in an onClickListener?

单击按钮时,我想为我的 Room 数据创建一个 query。我在 OnClickListener 中放入了我的数据 observableobserverOnClickListener 方法之外工作正常,但在它内部,所有者参数不匹配。

Android Studio 要求 android.arch.lifecycle.LifeCycleOwner 但说得到 android.view.View.OnClickListener.

showAllButton.setOnClickListener( new View.OnClickListener() {
        @Override
        public void onClick(View v) {

        //The "this" parameter is underlined red

            myViewModel.getAllDataVM().observe(    this   , new Observer<List<MyRoomEntity>>() {
                @Override
                public void onChanged(@Nullable List<MyRoomEntity> myRoomEntities) {
                    //myAdapter.setList( myRoomEntities );

                    Log.d("TAG", "OBSERVED");
                    if(myRoomEntities != null) {
                        for(MyRoomEntity item: myRoomEntities) {
                            Log.d("TAG ROOM ", "" + item.toString());
                        }
                    }
                }
            } );
        }
    } );//End Button

this下划线为红色,即owner参数。我试过使用 contextapplication 等,但没有任何效果。也许 OnClickListener 中不可能有观察者,但我该怎么办?

这是一个很容易修复的常见错误。 this 关键字当前指的是 View.OnClickListener,它 而不是 .observe() 的参数之一。因此,要解决此问题,您只需将 this 替换为:

  1. getApplicationContext()
  2. MyActivity.this

您的代码应该基本保持不变:

 myViewModel.getAllDataVM().observe(getApplicationContext(), new Observer<List<MyRoomEntity>>() {
     @Override
     public void onChanged(@Nullable List<MyRoomEntity> myRoomEntities) {
         //.....