Hocam yazdıgınız kodda mvp mantıgına ters seyler var. UserModel de yaptıgınızı presenterın icindede yapabilirsiniz. Ama dogru degil. Mvp nin kullanım amacı kodu katmanlara bölerek temiz kod (clean code) yazmak. Temiz bir kod yazarak hatanın nerede hangi katmanda oldugunu kolayca anlayabilirsiniz. Test etmeniz ve test yazmanızda kolaylaşır.
Ve kodunuzda gördüğüm kadarıyla presenter class ının içinde startactivity yapıyorsunuz. View ile activity ile ilgili islemlerin hepsini activity de yapmanız gerekiyor mvp ye göre Presenter sadece bir aracı presenterdan data istersiniz presenter gidip service ten veya database ten baska bir class aracılıgıyla datayı alır sonra oda interfaceler yardımıyla datayı activity aktarır. Presenter sadece aracıdır gerektiginden fazla is yaptırmaya kaltıgınızda mvp nin avantajlarından faydalanmamıs olursunuz. Data aktarımınıda interface yardımıyla yapmanız gerekiyor görüdügüm kadarıyla interface kullanmıyorsunuz.Size tavsiyem internette biraz daha mvp yi arastırmanız kodları kurcalamanız
https://github.com/antoniolg/androidmvp
Bu orneği ben beğendim ilk başta bunu incelemenizi tavsiye ederim. Buna benzer yapabilirsiniz.
İyi çalışmalar