MVP和Fresco和RXJava和绑定取绑加上拉下拉
来源:互联网 发布:免费版 ssl 阿里云 编辑:程序博客网 时间:2024/05/22 12:38
Model层
M层接口
public interface IModel { public void xrecy(Observer<Bean> observer);}
m层类
public class Model implements IModel{private Bean bean; @Override public void xrecy(Observer<Bean> observer) { Observable.create(new Observable.OnSubscribe<Bean>() { @Override public void call(final Subscriber<? super Bean> subscriber) { Retrofit retrofit=new Retrofit.Builder() .baseUrl("http://m.yunifang.com/") .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .build(); GetRequest_Interface getUrl_jk=retrofit.create(GetRequest_Interface.class); Call<Bean> call=getUrl_jk.getCall(); call.enqueue(new Callback<Bean>() { @Override public void onResponse(Call<Bean> call, Response<Bean> response) { bean=response.body(); subscriber.onNext(bean); subscriber.onCompleted(); } @Override public void onFailure(Call<Bean> call, Throwable t) { } }); } }).subscribeOn(Schedulers.newThread()).observeOn(AndroidSchedulers.mainThread()) .subscribe(observer); }}view层
public interface IHomeView { public void showData(Bean bean);}p层
接口
public interface IBindDing<T> { public void attach(T view); public void detach();}IPresenter
public class IPresenter implements IBindDing<IHomeView>{ Context context; Model model; IHomeView view; SoftReference<IHomeView> softReference; public IPresenter(Context context, IHomeView view) { this.context = context; attach(view); model=new Model(); } public void showRecy(){ model.xrecy(new Observer<Bean>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(Bean bean) { softReference.get().showData(bean); } }); } @Override public void attach(IHomeView view) { softReference=new SoftReference<IHomeView>(view); Log.i("attach","绑定成功"); } @Override public void detach() { softReference.clear(); Log.i("detach","取消绑定"); }}
//注解的接口
public interface GetRequest_Interface { @GET("yunifang/mobile/home") Call<Bean> getCall();}//实现的主类
public class Tabf1<T extends IPresenter> extends Fragment implements IHomeView{ private T presenter; private View view; private XRecyclerView xrv; private MyAdapter adapter; private Handler handler=new Handler(){}; private int index=7; private boolean type=true; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { view = View.inflate(getActivity(), R.layout.tabf1,null); presenter= (T) new IPresenter(getActivity(),this); Fresco.initialize(getActivity()); xrv=view.findViewById(R.id.xrv); xrv.setLayoutManager(new LinearLayoutManager(getActivity())); presenter.showRecy(); return view; } @Override public void showData(final Bean bean) { adapter=new MyAdapter(getActivity(),bean); xrv.setAdapter(adapter); xrv.setLoadingListener(new XRecyclerView.LoadingListener() { @Override public void onRefresh() { handler.postDelayed(new Runnable() { @Override public void run() { type=false; index++; xrv.refreshComplete(); Toast.makeText(getActivity(),"刷新成功",Toast.LENGTH_SHORT).show(); } },1000); } @Override public void onLoadMore() { handler.postDelayed(new Runnable() { @Override public void run() { type=true; index++; bean.getData().getSubjects().addAll(bean.getData().getSubjects()); xrv.refreshComplete(); Toast.makeText(getActivity(),"上拉加载",Toast.LENGTH_SHORT).show(); } },1000); } }); } @Override public void onDestroy() { super.onDestroy(); presenter.detach(); }}//viewPager与按钮点击
public class MainActivity extends AppCompatActivity { private ViewPager vp; private MyPagerAdapter adapter; private RadioGroup rg; private RadioButton rb1,rb2,rb3,rb4; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); adapter=new MyPagerAdapter(getSupportFragmentManager()); vp.setAdapter(adapter); //默认选中资讯页面 vp.setCurrentItem(2); rb3.setTextColor(Color.GREEN); rb1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { vp.setCurrentItem(0); } }); rb2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { vp.setCurrentItem(1); } }); rb3.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { vp.setCurrentItem(2); } }); rb4.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { vp.setCurrentItem(3); } }); vp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { switch (position) { case 0: rb1.setTextColor(Color.GREEN); rb2.setTextColor(Color.BLACK); rb3.setTextColor(Color.BLACK); rb4.setTextColor(Color.BLACK); vp.setCurrentItem(0); break; case 1: rb2.setTextColor(Color.GREEN); rb1.setTextColor(Color.BLACK); rb3.setTextColor(Color.BLACK); rb4.setTextColor(Color.BLACK); vp.setCurrentItem(1); break; case 2: rb3.setTextColor(Color.GREEN); rb2.setTextColor(Color.BLACK); rb1.setTextColor(Color.BLACK); rb4.setTextColor(Color.BLACK); vp.setCurrentItem(2); break; case 3: rb4.setTextColor(Color.GREEN); rb2.setTextColor(Color.BLACK); rb3.setTextColor(Color.BLACK); rb1.setTextColor(Color.BLACK); vp.setCurrentItem(3); break; } } @Override public void onPageScrollStateChanged(int state) { } }); } private void initView() { vp= (ViewPager) findViewById(R.id.vp); rg= (RadioGroup) findViewById(R.id.rg); rb1= (RadioButton) findViewById(R.id.rb1); rb2= (RadioButton) findViewById(R.id.rb2); rb3= (RadioButton) findViewById(R.id.rb3); rb4= (RadioButton) findViewById(R.id.rb4); } class MyPagerAdapter extends FragmentPagerAdapter{ public MyPagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { Fragment fragment=null; switch (position) { case 0: fragment=new Fragment1(); break; case 1: fragment=new Fragment2(); break; case 2: fragment=new Fragment3(); break; case 3: fragment=new Fragment4(); break; } return fragment; } @Override public int getCount() { return 4; } }}//布局
<android.support.v4.view.ViewPager android:layout_below="@+id/tv_title" android:id="@+id/vp" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.v4.view.ViewPager><LinearLayout android:layout_alignParentBottom="true" android:layout_width="match_parent" android:layout_height="50dp" > <RadioGroup android:id="@+id/rg" android:orientation="horizontal" android:layout_gravity="center" android:layout_width="match_parent" android:layout_height="wrap_content"> <RadioButton android:id="@+id/rb1" android:text="首页" android:textSize="25sp" android:button="@null" android:layout_weight="1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <RadioButton android:id="@+id/rb2" android:text="排行" android:textSize="25sp" android:button="@null" android:layout_weight="1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <RadioButton android:id="@+id/rb3" android:text="资讯" android:textSize="25sp" android:button="@null" android:layout_weight="1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <RadioButton android:id="@+id/rb4" android:text="交易" android:textSize="25sp" android:button="@null" android:layout_weight="1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </RadioGroup></LinearLayout>app依赖
dependencies { compile 'com.android.support:appcompat-v7:26.+' compile 'com.android.support.constraint:constraint-layout:1.0.2' testCompile 'junit:junit:4.12' compile 'com.android.support:design:26.0.0-alpha1' compile 'com.jcodecraeer:xrecyclerview:1.3.2' compile 'com.android.support:recyclerview-v7:26.0.0-alpha1' compile 'com.google.code.gson:gson:2.2.4' compile 'com.squareup.okhttp3:okhttp:3.9.0' compile 'com.facebook.fresco:fresco:0.11.0' compile 'io.reactivex:rxjava:1.0.14' compile 'com.squareup.retrofit2:retrofit:2.0.2' compile 'io.reactivex:rxandroid:1.0.1' compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta4' compile 'com.squareup.retrofit2:adapter-rxjava:2.0.0-beta4' compile 'com.squareup.retrofit2:converter-gson:2.1.0'}
阅读全文
0 0
- MVP和Fresco和RXJava和绑定取绑加上拉下拉
- recycleview加载数据实现数据刷新上拉下拉 Demo 用到retrofit 和mvp模式 图片展示
- MVP+Fresco+RxJava
- MVP+Rectrofit+RXJAVA+Fresco
- MVP+Rectrofit+RXJAVA+Fresco
- Retrofit+RxJava+Fresco+MVP
- MVP+Rectrofit+RXJAVA+Fresco
- MVP+Fresco+Rxjava
- Retrofit+RxJava+Fresco+MVP
- 修改PullToRefresh中上拉下拉的图标和文字
- XRecyclerView和万能baseeAdapter 实现上拉下拉刷新列表
- MVP封装成基类结合retrofit和Rxjava
- MVP封装成基类结合retrofit和Rxjava
- 动态绑定/解绑控件变量和控件
- 复习java基础------>java的静态绑定和动态绑
- MVP+XRexyclerview+RxJava+Retrofit+Fresco
- MVP+Retrofit+RxJava+fresco+RecyclerView
- MVP+Retrotfit+RxJava+Fresco+banner
- linux基础(四)find、vim、gedit
- 【codevs 1200】同余方程
- Fresco+git动画
- 盘点 10 大开源免费的项目管理软件
- Jzoj5454【NOIP2017提高A组冲刺11.5】仔细的检查
- MVP和Fresco和RXJava和绑定取绑加上拉下拉
- 自定义View
- 013 方程组的形式、解的理论、解的结构
- Angular 4入门教程系列:7:Tour Of Heroes之路由
- 二维码扫描
- fresco
- linux基础(五)用户管理、umask、忘记root密码如何解决
- 百度首页
- 扫描二维码