goldze / MVVMHabit

👕基于谷歌最新AAC架构,MVVM设计模式的一套快速开发库,整合Okhttp+RxJava+Retrofit+Glide等主流模块,满足日常开发需求。使用该框架可以快速开发一个高质量、易维护的Android应用。
Apache License 2.0
7.6k stars 1.69k forks source link

【2020】Bug问题,统一在此反馈 #67

Open goldze opened 4 years ago

goldze commented 4 years ago

如果您在使用中发现存在Bug,请在此提出,一同建造全网最优Android MVVM开发方案,感谢您的反馈!

751519917 commented 4 years ago

程序运行后在Bugly上发现一些异常 java.lang.ClassCastException:java.lang.NullPointerException cannot be cast to me.goldze.mvvmhabit.http.ResponseThrowable

查看源码后发现是因为 RetrofitClient.getInstance().create(DemoApiService.class) .demoGet() .compose(RxUtils.bindToLifecycle(getLifecycleProvider())) // 请求与View周期同步 .compose(RxUtils.schedulersTransformer()) // 线程调度 .compose(RxUtils.exceptionTransformer()) // 网络错误的异常转换 .subscribe(new Consumer<BaseResponse>() { @Override public void accept(BaseResponse response) throws Exception {

    }
}, new Consumer<ResponseThrowable>() {
    @Override
    public void accept(ResponseThrowable throwable) throws Exception {

    }
});

并不是所有的异常信息都会经过我们自己写的异常处理,具体原因还在定位。建议修改为 RetrofitClient.getInstance().create(DemoApiService.class) .demoGet() .compose(RxUtils.bindToLifecycle(getLifecycleProvider())) // 请求与View周期同步 .compose(RxUtils.schedulersTransformer()) // 线程调度 .compose(RxUtils.exceptionTransformer()) // 网络错误的异常转换 .subscribe(new Consumer<BaseResponse>() { @Override public void accept(BaseResponse response) throws Exception {

    }
}, new Consumer<Exception>() {
    @Override
    public void accept(Exception ex) throws Exception {
           if( ex instanceof ResponseThrowable) {
                //TODO
           } else {
               //TODO
          }
    }
});
goldze commented 4 years ago

@751519917 感谢反馈!!

implistarry commented 4 years ago

AndroidX那个分支的recycleview 套装是不是需要更新才行? "bindingcollectionadapter" : "me.tatarka.bindingcollectionadapter2:bindingcollectionadapter", "bindingcollectionadapter-recyclerview": "me.tatarka.bindingcollectionadapter2:bindingcollectionadapter-recyclerview",

2.x的版本不支持AndroidX

YesXiamo commented 4 years ago

多个fragment入栈,出栈后,fragment泄露 image

bujinhai commented 4 years ago

错误: 无法将类 BindingRecyclerViewAdapters中的方法 setAdapter应用到给定类型; 需要: RecyclerView,ItemBinding,List,BindingRecyclerViewAdapter,ItemIds<? super T>,ViewHolderFactory 找到: RecyclerView,ItemBinding,ObservableList,BindingRecyclerViewAdapter<CAP#1>,ItemIds,ViewHolderFactory 原因: 推断类型不符合等式约束条件 推断: CAP#1 等式约束条件: CAP#1,NetWorkItemViewModel 其中, T是类型变量: T扩展已在方法 setAdapter(RecyclerView,ItemBinding,List,BindingRecyclerViewAdapter,ItemIds<? super T>,ViewHolderFactory)中声明的Object 其中, CAP#1是新类型变量: CAP#1从?的捕获扩展Object

你好,导入项目报上面的错误,gradle版本为3.5.3,请问怎么解决?

KupoGu commented 4 years ago

https://github.com/evant/binding-collection-adapter @bujinhai 可以通过源码改

nonelg commented 4 years ago

https://github.com/evant/binding-collection-adapter @bujinhai 可以通过源码改

请问怎么改才能解决这个问题?

smileToWxm commented 4 years ago

多个fragment入栈,出栈后,fragment泄露 image

你这边应该是ViewPage加fragment造成的,你可以看看这篇文章https://blog.csdn.net/weixin_30682415/article/details/94983262

zhang214214 commented 4 years ago

网络请求服务器不存在的时候会报以下错误: Caused by: java.net.ConnectException: Failed to connect to /192.168.70.140:8888 at okhttp3.internal.connection.RealConnection.connectSocket(RealConnection.java:242) at okhttp3.internal.connection.RealConnection.connect(RealConnection.java:160) at okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:257) at okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:135) at okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:114) at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121) at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:93) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121) at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:126) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121) at me.goldze.mvvmhabit.http.interceptor.logging.LoggingInterceptor.intercept(LoggingInterceptor.java:78) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121) at me.goldze.mvvmhabit.http.interceptor.CacheInterceptor.intercept(CacheInterceptor.java:29) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121) at me.goldze.mvvmhabit.http.interceptor.BaseInterceptor.intercept(BaseInterceptor.java:32) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)

cuong292 commented 4 years ago

add "screenSize" of configChanges in manifest to not recreate fragment cause it not work sometime ( for me is Android 18)

KidAndroid commented 4 years ago

错误:无法将类BindingRecyclerViewAdapters中的方法setAdapter应用到给定类型; 需要:RecyclerView,ItemBinding,List,BindingRecyclerViewAdapter,ItemIds <?超级T>,ViewHolderFactory 找到:RecyclerView,ItemBinding,ObservableList,BindingRecyclerViewAdapter <CAP#1>,ItemIds,ViewHolderFactory 原因:CAP类型不符合等式约束条件 :CAP#1 等式约束条件:CAP#1,NetWorkItemViewModel 其中, T是类型变量: T扩展已在方法setAdapter(RecyclerView,ItemBinding,List,BindingRecyclerViewAdapter,ItemIds <?super T>,ViewHolderFactory)中声明的对象 ,CAP#1是新类型变量: CAP#1从?的捕获扩展对象

你好,引入项目报上面的错误,gradle版本为3.5.3,请问怎么解决?

这个我目前改动是 把布局中 databing{adater} 取消,改到代码中setadapter,这样可以让demo跑起来,我的gradle是 3.5.2,

KidAndroid commented 4 years ago

错误: 无法将类 BindingRecyclerViewAdapters中的方法 setAdapter应用到给定类型; 需要: RecyclerView,ItemBinding,List,BindingRecyclerViewAdapter,ItemIds<? super T>,ViewHolderFactory 找到: RecyclerView,ItemBinding,ObservableList,BindingRecyclerViewAdapter<CAP#1>,ItemIds,ViewHolderFactory 原因: 推断类型不符合等式约束条件 推断: CAP#1 等式约束条件: CAP#1,NetWorkItemViewModel 其中, T是类型变量: T扩展已在方法 setAdapter(RecyclerView,ItemBinding,List,BindingRecyclerViewAdapter,ItemIds<? super T>,ViewHolderFactory)中声明的Object 其中, CAP#1是新类型变量: CAP#1从?的捕获扩展Object

你好,导入项目报上面的错误,gradle版本为3.5.3,请问怎么解决?

这个问题我想是 databinding 泛型的原因导致的, 我这样解决了这个问题 这个是 recyclerview 配置了 binding:adapter="@{adapter}" 产生的错误 比如demo中的 network fragment 先理清adapter的泛型 是哪个对象 这里是com.goldze.mvvmhabit.ui.network.NetWorkItemViewModel 然后在布局添加这句

修改这句 新的语句是明确了泛型的(可以查一下databinding 泛型的使用),这样 demo跑起来没问题

KidAndroid commented 4 years ago

错误: 无法将类 BindingRecyclerViewAdapters中的方法 setAdapter应用到给定类型; 需要: RecyclerView,ItemBinding,List,BindingRecyclerViewAdapter,ItemIds<? super T>,ViewHolderFactory 找到: RecyclerView,ItemBinding,ObservableList,BindingRecyclerViewAdapter<CAP#1>,ItemIds,ViewHolderFactory 原因: 推断类型不符合等式约束条件 推断: CAP#1 等式约束条件: CAP#1,NetWorkItemViewModel 其中, T是类型变量: T扩展已在方法 setAdapter(RecyclerView,ItemBinding,List,BindingRecyclerViewAdapter,ItemIds<? super T>,ViewHolderFactory)中声明的Object 其中, CAP#1是新类型变量: CAP#1从?的捕获扩展Object 你好,导入项目报上面的错误,gradle版本为3.5.3,请问怎么解决?

这个问题我想是 databinding 泛型的原因导致的, 我这样解决了这个问题 这个是 recyclerview 配置了 binding:adapter="@{adapter}" 产生的错误 比如demo中的 network fragment 先理清adapter的泛型 是哪个对象 这里是com.goldze.mvvmhabit.ui.network.NetWorkItemViewModel 然后在布局添加这句

修改这句 为 新的语句是明确了泛型的(可以查一下databinding 泛型的使用),这样 demo跑起来没问题

我不知道为什么前面的代码消失了。这里添加补充 添加 import com.goldze.mvvmhabit.ui.network.NetWorkItemViewModel 修改为 name=adapter type=MyDatabindingAdapter<NetWorkItemViewModel>

smileToWxm commented 4 years ago

错误: 无法将类 BindingRecyclerViewAdapters中的方法 setAdapter应用到给定类型; 需要: RecyclerView,ItemBinding,List,BindingRecyclerViewAdapter,ItemIds<? super T>,ViewHolderFactory 找到: RecyclerView,ItemBinding,ObservableList,BindingRecyclerViewAdapter<CAP#1>,ItemIds,ViewHolderFactory 原因: 推断类型不符合等式约束条件 推断: CAP#1 等式约束条件: CAP#1,NetWorkItemViewModel 其中, T是类型变量: T扩展已在方法 setAdapter(RecyclerView,ItemBinding,List,BindingRecyclerViewAdapter,ItemIds<? super T>,ViewHolderFactory)中声明的Object 其中, CAP#1是新类型变量: CAP#1从?的捕获扩展Object 你好,导入项目报上面的错误,gradle版本为3.5.3,请问怎么解决?

这个问题我想是 databinding 泛型的原因导致的, 我这样解决了这个问题 这个是 recyclerview 配置了 binding:adapter="@{adapter}" 产生的错误 比如demo中的 network fragment 先理清adapter的泛型 是哪个对象 这里是com.goldze.mvvmhabit.ui.network.NetWorkItemViewModel 然后在布局添加这句 修改这句 为 新的语句是明确了泛型的(可以查一下databinding 泛型的使用),这样 demo跑起来没问题

我不知道为什么前面的代码消失了。这里添加补充 添加 import com.goldze.mvvmhabit.ui.network.NetWorkItemViewModel 修改为 name=adapter type=MyDatabindingAdapter

如果不需要在Adapter里面执行特殊的操作,那么可以不设置adapter,只要你设置了itembing和items,如果你没有设置adapter,表达式会为你绑定默认的适配器 image

smileToWxm commented 4 years ago

这样就可以了 image

KidAndroid commented 4 years ago

这样就可以了 图片

great

YesXiamo commented 4 years ago

多个fragment入栈,出栈后,fragment泄露 image

你这边应该是ViewPage加fragment造成的,你可以看看这篇文章https://blog.csdn.net/weixin_30682415/article/details/94983262

没用使用ViewPage诶,用的Frafmention的库结合这个,也尝试过直接用原始fragment的 FragmentManager来切换,一样会泄露

lydlovezjr commented 4 years ago

更新到最新的3.6.3的As和5.6.4的Gradle,跑不起来了

微信截图_20200515175803
KidAndroid commented 4 years ago

更新到最新的3.6.3的As和5.6.4的Gradle,跑不起来了

微信截图_20200515175803

这个问题作者其实已经作过解释了,你找找关键字CAP#1,作者建议gradle不要超过3.5,上面也有回复怎么避免这个问题,我前面的回复太特定了,固定了模板,没有什么参考价值,没有特别的adapter需要 不设置就好,会自动使用默认的

devzwy commented 4 years ago

各种内存泄漏...

截屏2020-05-31 10 39 35
iFarSeer commented 4 years ago

什么世道,这种东西还有人star??? 谁用谁死的节奏

fangDevAnd commented 4 years ago

LoggingInterceptor 报错 在intercept方法中segmentList = ((Request) request.tag()).url().encodedPathSegments(); 其中 request.tag()出现了为null的情况,导致程序不能成长执行

KupoGu commented 4 years ago

这个用base 继承的方式局限性太大了,建议作者用ActivityLifecycleCallbacks来去掉继承的局限

nxnyk commented 4 years ago

什么世道,这种东西还有人star??? 谁用谁死的节奏

这框架怎么了。。。刚准备用。。

iFarSeer commented 4 years ago

什么世道,这种东西还有人star??? 谁用谁死的节奏

这框架怎么了。。。刚准备用。。

这框架会限制太多,灵活度不高,可以借鉴,切忌不要拿来即用,自己多想想自己的项目现在什么阶段,结合实际情况自己定制。

nxnyk commented 4 years ago

什么世道,这种东西还有人star??? 谁用谁死的节奏

这框架怎么了。。。刚准备用。。

这框架会限制太多,灵活度不高,可以借鉴,切忌不要拿来即用,自己多想想自己的项目现在什么阶段,结合实际情况自己定制。

项目刚准备开发,属于要快速上架的产品。。。想用这个框架快速开发的,省的自己去搭建框架。。应该没啥大问题吧。。我看你说的以为有多严重的设计缺陷呢。。

nxnyk commented 4 years ago

什么世道,这种东西还有人star??? 谁用谁死的节奏

这框架怎么了。。。刚准备用。。

这框架会限制太多,灵活度不高,可以借鉴,切忌不要拿来即用,自己多想想自己的项目现在什么阶段,结合实际情况自己定制。

老哥 我看了你头像。。你和我哥长的一模一样😂😂😂

ChanKingBooo commented 4 years ago

执行完requestBuilder.build(),url发生了重定向

002 003

devzwy commented 4 years ago

需要离线鉴黄的可以看我首页,demo使用mvvm

zhangyuanzhao commented 4 years ago

错误: 不兼容的类型: Context无法转换为Application

zhangyuanzhao commented 4 years ago

public BaseViewModel(@NonNull Application application) { this(application, null); }

public BaseViewModel(@NonNull Application application, M model) { super(application); this.model = model; mCompositeDisposable = new CompositeDisposable(); }

------------------ 原始邮件 ------------------ 发件人: "ChanKing"<notifications@github.com>; 发送时间: 2020年6月29日(星期一) 中午11:12 收件人: "goldze/MVVMHabit"<MVVMHabit@noreply.github.com>; 抄送: "657598922"<657598922@qq.com>;"Comment"<comment@noreply.github.com>; 主题: Re: [goldze/MVVMHabit] 【2020】Bug问题,统一在此反馈 (#67)

错误: 不兼容的类型: Context无法转换为Application

你看一下BaseViewModel的构造方法

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.

superheroLiang commented 4 years ago

viewpager+fragment页面重新启动时,闪退

Build version: 3.0.0 Current date: 2020-07-01 11:00:18 Device: Xiaomi Mi 10 Pro

Stack trace:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.gotoschool.teacher/me.goldze.mvvmhabit.base.ContainerActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.util.SparseArray.get(int)' on a null object reference at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3312) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3461) at android.app.ActivityThread.handleRelaunchActivityInner(ActivityThread.java:5367) at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:5275) at android.app.servertransaction.ActivityRelaunchItem.execute(ActivityRelaunchItem.java:69) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2048) at android.os.Handler.dispatchMessage(Handler.java:107) at android.os.Looper.loop(Looper.java:227) at android.app.ActivityThread.main(ActivityThread.java:7573) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:953) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.util.SparseArray.get(int)' on a null object reference at android.support.v4.app.FragmentManagerImpl.getFragment(FragmentManager.java:936) at me.goldze.mvvmhabit.base.ContainerActivity.onCreate(ContainerActivity.java:39) at android.app.Activity.performCreate(Activity.java:7893) at android.app.Activity.performCreate(Activity.java:7880) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1307) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3287) ... 13 more

User actions: 2020-07-01 10:58:59: SplashActivity created 2020-07-01 10:58:59: SplashActivity resumed 2020-07-01 10:59:00: SplashActivity paused 2020-07-01 10:59:00: MainActivity created 2020-07-01 10:59:00: MainActivity resumed 2020-07-01 10:59:01: SplashActivity destroyed 2020-07-01 10:59:07: MainActivity paused 2020-07-01 10:59:07: ContainerActivity created 2020-07-01 10:59:07: ContainerActivity resumed 2020-07-01 10:59:08: ContainerActivity paused 2020-07-01 10:59:08: ContainerActivity created 2020-07-01 10:59:09: ContainerActivity resumed 2020-07-01 10:59:11: ContainerActivity paused 2020-07-01 10:59:11: ContainerActivity resumed 2020-07-01 10:59:11: ContainerActivity destroyed 2020-07-01 10:59:12: ContainerActivity paused 2020-07-01 10:59:12: MainActivity resumed 2020-07-01 10:59:12: ContainerActivity destroyed 2020-07-01 10:59:14: MainActivity paused 2020-07-01 10:59:14: ContainerActivity created 2020-07-01 10:59:14: ContainerActivity resumed 2020-07-01 10:59:15: ContainerActivity paused 2020-07-01 10:59:15: ContainerActivity created 2020-07-01 10:59:15: ContainerActivity resumed 2020-07-01 10:59:17: ContainerActivity paused 2020-07-01 10:59:17: ContainerActivity created 2020-07-01 10:59:17: ContainerActivity resumed 2020-07-01 10:59:22: ContainerActivity paused 2020-07-01 10:59:22: ContainerActivity resumed 2020-07-01 10:59:22: ContainerActivity destroyed 2020-07-01 10:59:22: ContainerActivity destroyed 2020-07-01 10:59:23: ContainerActivity paused 2020-07-01 10:59:23: ContainerActivity created 2020-07-01 10:59:23: ContainerActivity resumed 2020-07-01 10:59:40: ContainerActivity paused 2020-07-01 10:59:41: ContainerActivity resumed 2020-07-01 10:59:50: ContainerActivity paused 2020-07-01 10:59:50: ContainerActivity destroyed 2020-07-01 10:59:50: ContainerActivity created

pjx2019 commented 4 years ago

1、如果不重写adapter,只用viewModel,一个recyclerview里包含着另一个recyclerview,我发现第二个recyclerview的viewmodel生命周期方法都没有走,这样会造成内存泄露吗? 2、如果用recyclerview默认给的adapter是BindingRecyclerViewAdapters还是BindingCollectionAdapters里面设置的默认adapter?

lujiasheng commented 4 years ago

网络请求data返回空的时候出现 The mapper function returned a null value.

minorlai commented 4 years ago

这么多bug。。。。。。

abner0914 commented 4 years ago

你好,非常感谢你分享的这套框架,帮我快速构建开发了不少小项目。 最近遇到个问题,尝试多次还是没搞定,不知能否在示例中,增加【如何在列表中,获取某个ITEM下,某个VIEW的示例】。 期待你的答复,非常感谢。

goldze commented 4 years ago

你好,非常感谢你分享的这套框架,帮我快速构建开发了不少小项目。 最近遇到个问题,尝试多次还是没搞定,不知能否在示例中,增加【如何在列表中,获取某个ITEM下,某个VIEW的示例】。 期待你的答复,非常感谢。

请参考: https://github.com/goldze/MVVMHabit/blob/master/app/src/main/java/com/goldze/mvvmhabit/ui/network/NetWorkItemViewModel.java

taishuhongye commented 4 years ago

不支持AndroidX吗

nxnyk commented 4 years ago

1、如果不重写adapter,只用viewModel,一个recyclerview里包含着另一个recyclerview,我发现第二个recyclerview的viewmodel生命周期方法都没有走,这样会造成内存泄露吗? 2、如果用recyclerview默认给的adapter是BindingRecyclerViewAdapters还是BindingCollectionAdapters里面设置的默认adapter?

貌似会有这个问题。。。

oldfish96 commented 4 years ago

如果要加侧边栏我该如何操作?

Jasperben commented 4 years ago

/MVVMHabit/app/build/generated/ap_generated_sources/debug/out/com/goldze/mvvmhabit/databinding/FragmentNetworkBindingImpl.java:158: 错误: 无法将类 BindingRecyclerViewAdapters中的方法 setAdapter应用到给定类型; me.tatarka.bindingcollectionadapter2.BindingRecyclerViewAdapters.setAdapter(this.mboundView2, viewModelItemBinding, viewModelObservableList, adapter, (me.tatarka.bindingcollectionadapter2.BindingRecyclerViewAdapter.ItemIds)null, (me.tatarka.bindingcollectionadapter2.BindingRecyclerViewAdapter.ViewHolderFactory)null, (androidx.recyclerview.widget.AsyncDifferConfig)null); ^ 需要: RecyclerView,ItemBinding,List,BindingRecyclerViewAdapter,ItemIds<? super T>,ViewHolderFactory,AsyncDifferConfig 找到: RecyclerView,ItemBinding,ObservableList,BindingRecyclerViewAdapter<CAP#1>,ItemIds,ViewHolderFactory,AsyncDifferConfig 原因: 推断类型不符合等式约束条件 推断: CAP#1 等式约束条件: CAP#1,NetWorkItemViewModel 其中, T是类型变量: T扩展已在方法 setAdapter(RecyclerView,ItemBinding,List,BindingRecyclerViewAdapter,ItemIds<? super T>,ViewHolderFactory,AsyncDifferConfig)中声明的Object 其中, CAP#1是新类型变量: CAP#1从?的捕获扩展Object

smileToWxm commented 4 years ago

1、如果不重写adapter,只用viewModel,一个recyclerview里包含着另一个recyclerview,我发现第二个recyclerview的viewmodel生命周期方法都没有走,这样会造成内存泄露吗? 2、如果用recyclerview默认给的adapter是BindingRecyclerViewAdapters还是BindingCollectionAdapters里面设置的默认adapter?

如果是较复杂的操作,可以参考demo里的itemmodel,把第二个recyclerview的items和itembing放在itemmodel里面这样就跟普通的操作是一样的了,如果很复杂的需要得到view那就继承BindingRecyclerViewAdapters。 BindingCollectionAdapters里面只是默认创建一个BindingRecyclerViewAdapter

hxy1118 commented 3 years ago

大家千万不要把这个框架用到实际项目中,写个demo玩玩就行了

smileToWxm commented 3 years ago

大家千万不要把这个框架用到实际项目中,写个demo玩玩就行了

那是你不会使用,你不妨说出问题出来,看是否真那么坑?

273270381 commented 3 years ago
                <ImageView
                    android:id="@+id/iv_title_one"
                    android:layout_width="55dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:background="?attr/selectableItemBackgroundBorderless"
                    binding:onClickCommand="@{viewModel.commandOne}"
                    android:src="@drawable/titlebar_music"/>

public BindingCommand commandTwo = new BindingCommand(new BindingAction() {
    @Override
    public void call() {
        Log.d("TAG","click");
        //itemPos.setValue(1);
    }
});

无法触发点击事件?

smileToWxm commented 3 years ago

commandOne

你xml绑定的是commandOne,而代码贴出来的是 commandTwo

273270381 commented 3 years ago

贴错了,我代码里也是commandOne,后来我发先我xml是再里面,无法触发点击事件,但是放到外面有可以触发,算是bug吗?

smileToWxm commented 3 years ago

贴错了,我代码里也是commandOne,后来我发先我xml是再里面,无法触发点击事件,但是放到外面有可以触发,算是bug吗?

我们这都是放xml里可以正常触发没问题,可能是你漏了哪个步骤吧

sxy19951995 commented 3 years ago

Android x版本的 我用java写就可以 用kotlin写 就会出现错误Caused by: java.lang.ClassCastException: libcore.reflect.ParameterizedTypeImpl cannot be cast to java.lang.Class at me.goldze.mvvmhabit.base.BaseActivity.initViewDataBinding(BaseActivity.java:79) at me.goldze.mvvmhabit.base.BaseActivity.onCreate(BaseActivity.java:43)

qczgwxg commented 3 years ago

如果您在使用中发现存在Bug,请在此提出,一同建造全网最优Android MVVM开发方案,感谢您的反馈!

一个recyclerview里包含着另一个recyclerview,我发现第二个recyclerview的ItemView 不能随着数据的改变而刷新