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

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


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参数。我曾尝试使用context,application等,但没有任何效果。也许不可能在 内部有观察者OnClickListener,但那我该怎么办?


德玛西亚99
浏览 93回答 1
1回答

MMMHUHU

这是一个很容易修复的常见错误。this关键字当前指的是View.OnClickListener不是的参数之一.observe()。因此,要解决此问题,您只需替换this为:getApplicationContext()MyActivity.this您的代码应该基本保持不变:&nbsp;myViewModel.getAllDataVM().observe(getApplicationContext(), new Observer<List<MyRoomEntity>>() {&nbsp; &nbsp; &nbsp;@Override&nbsp; &nbsp; &nbsp;public void onChanged(@Nullable List<MyRoomEntity> myRoomEntities) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//.....
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java