Giter VIP home page Giter VIP logo

themvp's Introduction

OSL

TheMVP简介

越小的类,bug越不容易出现,越容易调试,更容易测试,我相信这一点大家是都赞同的。在MVP模式下,View和Model是完全分离没有任何直接关联的(比如你在View层中完全不需要导Model的包,也不应该去关联它们)。
使用 MVP 模式能够更方便的帮助 Activity (或 Fragment )职责分离,减小类体积,使项目结构更加清晰。

或者查看开源实验室中详细介绍:
https://kymjs.com/code/2015/11/09/01/

谁在使用

本项目已被支付宝使用,可查看设置->关于->版权信息。

你也可以提交Pull Request告诉我你的 APP 使用了TheMVP

使用方式

当前最新版本为:

// root build.gradle
allprojects {
    repositories {
        maven { url 'https://jitpack.io' }
    }
}

// module build.gradle
dependencies {
    implementation 'com.github.kymjs:themvp:2.0.0'
}

开源协议

 Copyright (C) 2015, 张涛
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.

themvp's People

Contributors

kymjs avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

themvp's Issues

例子太过简单,没有数据请求层,求加上

mvp本来就比较抽象,您又是用另一种更抽象的方式实现的,但是更加巧妙。
例子中的数据都是直接写死的,能不能加上从网络或者数据库请求的示例呢?
让我能更好的理解

getAdapter

为什么getAdapter的时候偶尔会报空指针

非常棒的封装,不过有些疑惑

因为近期一个已经完工的项目是传统的MVP写的,遇到过些问题,在寻求解决方案时就无意看到了你的项目,非常感谢你提供如此棒的写法,但有些问题想请教你:
demo的view和model绑定的使用场景是什么?在没用dataBinding时,那玩意和早年c# wpf很像,不完善暂时不用。

build.gradle

应该是:compile 'com.kymjs.frame:framework:1.0.5'吧, compile 'com.kymjs.core:themvp:1.0.5'找不到。

EditText使用android:textCursorDrawabl="@null", 数据绑定报错

大大看下这个什么情况
D:\Diaoyu\project\fish_android\FishAndroid\login\build\intermediates\data-binding-layout-out\debug\layout\login_activity_main.xml
Error:(21) No resource identifier found for attribute 'textCursorDrawabl' in package 'android'
Error:(46) No resource identifier found for attribute 'textCursorDrawabl' in package 'android'
Error:(21) No resource identifier found for attribute 'textCursorDrawabl' in package 'android'
Error:(46) No resource identifier found for attribute 'textCursorDrawabl' in package 'android'

只要Eidtext中, 加了android:textCursorDrawabl就会报错

ActivityPresenter需要设计些程序入口么?

ActivityPresenter需要设计些程序入口么?
比如有些在查找view之后的
和查找view之前的 一些程序初始化的入口?
还是说直接加入到bindEvenListener之中呢?
顺道问句 小哥有没有已经使用TheMVP开发的实例呢~~我正在使用开发一款app中~希望可以借鉴下

类型转换异常

java.lang.NoClassDefFoundError: Failed resolution of: Landroid/databinding/DataBinderMapper;
at android.databinding.DataBindingUtil.(DataBindingUtil.java:31)
at com.kymjs.themvp.view.AppDelegate.create(AppDelegate.java:43)
at com.kymjs.themvp.presenter.ActivityPresenter.createBinding(ActivityPresenter.java:59)
at com.kymjs.themvp.presenter.ActivityPresenter.onCreate(ActivityPresenter.java:51)
at android.app.Activity.performCreate(Activity.java:6303)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2376)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2483)
at android.app.ActivityThread.access$900(ActivityThread.java:153)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1349)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5438)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:629)

DataBindingUtil类找不到报错

DataBinding的时候,会报错。这是跟编译版本有关系吗?

/com.vcredit.zj.noplayer W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable
11-10 11:31:51.151 20204-20204/com.vcredit.zj.noplayer W/System.err: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/databinding/DataBinderMapper;
11-10 11:31:51.151 20204-20204/com.vcredit.zj.noplayer W/System.err: at android.databinding.DataBindingUtil.(DataBindingUtil.java:31)
11-10 11:31:51.151 20204-20204/com.vcredit.zj.noplayer W/System.err: at com.vcredit.zj.base.view.AppDelegate.create(AppDelegate.java:45)
11-10 11:31:51.151 20204-20204/com.vcredit.zj.noplayer W/System.err: at com.vcredit.zj.base.presenter.ActivityPresenter.createBinding(ActivityPresenter.java:61)
11-10 11:31:51.151 20204-20204/com.vcredit.zj.noplayer W/System.err: at com.vcredit.zj.base.presenter.ActivityPresenter.onCreate(ActivityPresenter.java:53)
11-10 11:31:51.151 20204-20204/com.vcredit.zj.noplayer W/System.err: at com.vcredit.zj.living.main.presenter.LivingActivity.onCreate(LivingActivity.java:18)
11-10 11:31:51.151 20204-20204/com.vcredit.zj.noplayer W/System.err: at android.app.Activity.performCreate(Activity.java:6876)
11-10 11:31:51.151 20204-20204/com.vcredit.zj.noplayer W/System.err: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1135)
11-10 11:31:51.151 20204-20204/com.vcredit.zj.noplayer W/System.err: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3207)
11-10 11:31:51.151 20204-20204/com.vcredit.zj.noplayer W/System.err: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3350)
11-10 11:31:51.151 20204-20204/com.vcredit.zj.noplayer W/System.err: at android.app.ActivityThread.access$1100(ActivityThread.java:222)
11-10 11:31:51.151 20204-20204/com.vcredit.zj.noplayer W/System.err: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1795)
11-10 11:31:51.151 20204-20204/com.vcredit.zj.noplayer W/System.err: at android.os.Handler.dispatchMessage(Handler.java:102)
11-10 11:31:51.151 20204-20204/com.vcredit.zj.noplayer W/System.err: at android.os.Looper.loop(Looper.java:158)
11-10 11:31:51.151 20204-20204/com.vcredit.zj.noplayer W/System.err: at android.app.ActivityThread.main(ActivityThread.java:7237)
11-10 11:31:51.151 20204-20204/com.vcredit.zj.noplayer W/System.err: at java.lang.reflect.Method.invoke(Native Method)
11-10 11:31:51.151 20204-20204/com.vcredit.zj.noplayer W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
11-10 11:31:51.151 20204-20204/com.vcredit.zj.noplayer W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
11-10 11:31:51.151 20204-20204/com.vcredit.zj.noplayer W/System.err: Caused by: java.lang.ClassNotFoundException: Didn't find class "android.databinding.DataBinderMapper" on path: DexPathList[[zip file "/data/app/com.vcredit.zj.noplayer-2/base.apk"],nativeLibraryDirectories=[/data/app/com.vcredit.zj.noplayer-2/lib/arm, /data/app/com.vcredit.zj.noplayer-2/base.apk!/lib/armeabi-v7a, /vendor/lib, /system/lib]]
11-10 11:31:51.151 20204-20204/com.vcredit.zj.noplayer W/System.err: at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
11-10 11:31:51.151 20204-20204/com.vcredit.zj.noplayer W/System.err: at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
11-10 11:31:51.151 20204-20204/com.vcredit.zj.noplayer W/System.err: at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
11-10 11:31:51.151 20204-20204/com.vcredit.zj.noplayer W/System.err: ... 17 more
11-10 11:31:51.151 20204-20204/com.vcredit.zj.noplayer W/System.err: Suppressed: java.lang.ClassNotFoundException: android.databinding.DataBinderMapper
11-10 11:31:51.151 20204-20204/com.vcredit.zj.noplayer W/System.err: at java.lang.Class.classForName(Native Method)
11-10 11:31:51.151 20204-20204/com.vcredit.zj.noplayer W/System.err: at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
11-10 11:31:51.151 20204-20204/com.vcredit.zj.noplayer W/System.err: at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
11-10 11:31:51.151 20204-20204/com.vcredit.zj.noplayer W/System.err: at java.lang.ClassLoader.loadClass(ClassLoader.java:504)

点击 Fragment4 数据绑定那一项 , 程序崩溃

Caused by: java.lang.NullPointerException:
Attempt to invoke virtual method 'void com.kymjs.frame.samples.databinding.FragmentUserBinding.setUser(com.kymjs.frame.samples.demo4.User)' on a null object reference
at com.kymjs.frame.samples.demo4.Demo4Fragment.onCreate(Demo4Fragment.java:36)

这个地方 binding.setUser(data);

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.