怎么做谷歌收录的网站bt磁力库
原文:https://www.jianshu.com/p/2f5bc6e9c54e
MediatorLiveData 中介者LiveData,
- 它可以监听另一个LiveData的数据变化,
- 同时也可以做为一个liveData,被其他Observer观察。
一、基本用法
ViewModel中定义MediatorLiveData
java
public class TanViewModel extends ViewModel {private MutableLiveData<String> mNameEvent = new MutableLiveData<>();public MutableLiveData<String> getNameEvent() {return mNameEvent;}public MediatorLiveData myMediatorLiveData=new MediatorLiveData();public TanViewModel(){myMediatorLiveData.addSource(mNameEvent, new Observer<String>() {@Overridepublic void onChanged(@Nullable String s) {String tempStr=mNameEvent.getValue();myMediatorLiveData.postValue(tempStr.length());}});}public void getData(int num){String name="tan"+num;Integer age=111;mNameEvent.postValue(name);}
}
kotlin
val mediator = MediatorLiveData<List<String>>();val strLive = MutableLiveData<List<String>>();//(1)为mediator addSource,监听其他的liveDatamediator.addSource(strLive, Observer {Log.i("ccccccccccc","onchange"+it.size);mediator.value = it})
Activity
java
//onCreate
mTestViewModel = ViewModelProviders.of(this).get(TanViewModel.class);
mTestViewModel.getNameEvent().observe(this, new Observer<String>() {@Overridepublic void onChanged(@Nullable String s) {Log.w("tan","getNameEvent="+s);}
});
mTestViewModel.myMediatorLiveData.observe(this, new Observer() {@Overridepublic void onChanged(@Nullable Object o) {Log.w("tan","myMediatorLiveData="+o);if(o instanceof String){Log.w("tan","String="+o);}else if(o instanceof Integer){Log.w("tan","Integer="+o);}}
});//button单击事件调用下面方法
num*=10;
mTestViewModel.getData(num);;
kotlin
class MainActivity : FragmentActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)//(2)监听mediaLiveData viewModel.mediator.observe(this, Observer {Log.i("ccccccccc","size==="+it.size)})binding.btnGotoGarden.setOnClickListener{viewModel.strLive.value = arrayListOf("1","22","333","4444","55555")};}