Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
goldze opened this issue Feb 26, 2020 · 60 comments
Open

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

goldze opened this issue Feb 26, 2020 · 60 comments

Comments

@goldze
Copy link
Owner

goldze commented Feb 26, 2020

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

@751519917
Copy link

程序运行后在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
Copy link
Owner Author

goldze commented Mar 20, 2020

@751519917 感谢反馈!!

@implistarry
Copy link

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

2.x的版本不支持AndroidX

@YesXiamo
Copy link

YesXiamo commented Apr 6, 2020

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

@bujinhai
Copy link

bujinhai commented Apr 7, 2020

错误: 无法将类 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
Copy link

KupoGu commented Apr 20, 2020

@nonelg
Copy link

nonelg commented Apr 24, 2020

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

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

@smileToWxm
Copy link

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

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

@zhang214214
Copy link

网络请求服务器不存在的时候会报以下错误:
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
Copy link

cuong292 commented May 5, 2020

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

@KidAndroid
Copy link

错误:无法将类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
Copy link

错误: 无法将类 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
Copy link

错误: 无法将类 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
Copy link

错误: 无法将类 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
Copy link

这样就可以了
image

@KidAndroid
Copy link

这样就可以了
图片

great

@YesXiamo
Copy link

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

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

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

@lydlovezjr
Copy link

更新到最新的3.6.3的As和5.6.4的Gradle,跑不起来了
微信截图_20200515175803

@KidAndroid
Copy link

更新到最新的3.6.3的As和5.6.4的Gradle,跑不起来了
微信截图_20200515175803

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

@devzwy
Copy link

devzwy commented May 31, 2020

各种内存泄漏...
截屏2020-05-31 10 39 35

@iFarSeer
Copy link

iFarSeer commented Jun 3, 2020

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

@fangDevAnd
Copy link

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

@KupoGu
Copy link

KupoGu commented Jun 5, 2020

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

@nxnyk
Copy link

nxnyk commented Jun 5, 2020

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

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

@iFarSeer
Copy link

iFarSeer commented Jun 5, 2020

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

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

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

@nxnyk
Copy link

nxnyk commented Jun 5, 2020

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

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

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

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

@nxnyk
Copy link

nxnyk commented Jun 5, 2020

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

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

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

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

@ChanKingBooo
Copy link

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

002
003

@devzwy
Copy link

devzwy commented Jun 17, 2020

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

@zhangyuanzhao
Copy link

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

@zhangyuanzhao
Copy link

zhangyuanzhao commented Jun 29, 2020 via email

@superheroLiang
Copy link

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
Copy link

pjx2019 commented Jul 2, 2020

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

@lujiasheng
Copy link

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

@minorlai
Copy link

这么多bug。。。。。。

@abner0914
Copy link

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

@goldze
Copy link
Owner Author

goldze commented Sep 3, 2020

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

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

@taishuhongye
Copy link

不支持AndroidX吗

@nxnyk
Copy link

nxnyk commented Sep 16, 2020

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

貌似会有这个问题。。。

@oldfish96
Copy link

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

@Jasperben
Copy link

/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
Copy link

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

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

@hxy1118
Copy link

hxy1118 commented Nov 28, 2020

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

@smileToWxm
Copy link

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

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

@273270381
Copy link

                <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
Copy link

commandOne

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

@273270381
Copy link

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

@smileToWxm
Copy link

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

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

@sxy19951995
Copy link

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
Copy link

qczgwxg commented Feb 6, 2021

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

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

@qczgwxg
Copy link

qczgwxg commented Feb 6, 2021

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

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

@artillerymans
Copy link

使用容器启动fragment,但是我需要一个返回值,直接getActivity().setResult(Activity.RESULT_OK)吗 接收起来是否不是很麻烦啊

@Yexi
Copy link

Yexi commented Apr 29, 2021

/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

请问你解决了嘛

@android-taoge
Copy link

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

我也遇到这个问题了,请问你解决了吗?

@zhangzhen1129
Copy link

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

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

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

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

项目很好 但确实 不适合商业项目 值得借鉴 如果是小项目 不是公司主产品 可以拿来用

@zhaoxiuyu
Copy link

databinding 能去掉吗

@xingfeng2010
Copy link

可以借鉴其中的开发思想,不要直接拿来用,限制太多了。

@TopTime1
Copy link

可复用的布局要引不同的viewmodel吗?

@TopTime1
Copy link

itemviewmodel里面获取条目的position只能通过indexof去获取下标吗?

@mengxiabing
Copy link

前两天还好好这,昨天突然自动依赖了androidx.core:core:1.7.0,编译不过,改compileSdkVersion31,用java11,强制androidx.core:core:1.6.0,一连串的错误,放弃这个项目了。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests