这是m层
package cui.com.myapplication.model; import cui.com.myapplication.Bean; import retrofit2.http.GET; import rx.Observable; /** * Created by ZMoffice on 2017.12.1. */ public interface Mmodel { @GET("v1/restserver/ting?method=baidu.ting.billboard.billList&type=1&size=10&offset=0") Observable<Bean> getbean(); }
这是v层
这是p层package cui.com.myapplication.view; import java.util.List; import cui.com.myapplication.Bean; /** * Created by ZMoffice on 2017.12.1. */ public interface Mview { void setdata(List<Bean.SongListBean> list); }
mainactivitypackage cui.com.myapplication.presenter; import android.content.Context; import android.util.Log; import java.util.List; import cui.com.myapplication.Bean; import cui.com.myapplication.LoggingInterceptor; import cui.com.myapplication.model.Mmodel; import cui.com.myapplication.view.Mview; import okhttp3.OkHttpClient; import retrofit2.Retrofit; import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory; import retrofit2.converter.gson.GsonConverterFactory; import rx.Observer; import rx.android.schedulers.AndroidSchedulers; import rx.schedulers.Schedulers; /** * Created by ZMoffice on 2017.12.1. */ public class Mpresenter { Mview view; Mmodel model; Context context; public Mpresenter(Mview view, Context context) { this.view = view; this.context = context; } public void getdata() { OkHttpClient client=new OkHttpClient.Builder(). addInterceptor(new LoggingInterceptor()). build(); Retrofit retrofit=new Retrofit.Builder() .baseUrl("http://tingapi.ting.baidu.com/") .client(client) .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .build(); model=retrofit.create(Mmodel.class); model.getbean() .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<Bean>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(Bean bean) { Log.i("111111", "onNext: "+bean.toString()); List<Bean.SongListBean> list=bean.getSong_list(); view.setdata(list); } }); } }
适配器package cui.com.myapplication; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.widget.Button; import android.widget.Toast; import java.util.List; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; import cui.com.myapplication.presenter.Mpresenter; import cui.com.myapplication.view.Mview; public class MainActivity extends AppCompatActivity implements Mview { @BindView(R.id.rv) RecyclerView rv; @BindView(R.id.bt) Button bt; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); LinearLayoutManager l = new LinearLayoutManager(MainActivity.this); rv.setLayoutManager(l); Mpresenter p = new Mpresenter(this, this); p.getdata(); } @Override public void setdata(List<Bean.SongListBean> list) { Myadp adp = new Myadp(list, MainActivity.this); rv.setAdapter(adp); } @OnClick(R.id.bt) public void onViewClicked() { Toast.makeText(MainActivity.this,"笑死我了",Toast.LENGTH_SHORT).show(); } }
bean类可以自己替换,拦截器也可以自定义,package cui.com.myapplication; import android.content.Context; import android.net.Uri; import android.support.v7.widget.RecyclerView; import android.util.Log; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import com.facebook.drawee.view.SimpleDraweeView; import java.util.List; /** * Created by ZMoffice on 2017.12.1. */ public class Myadp extends RecyclerView.Adapter<Myadp.Vh> { List<Bean.SongListBean> list; Context context; public Myadp(List<Bean.SongListBean> list, Context context) { this.list = list; this.context = context; } @Override public Vh onCreateViewHolder(ViewGroup parent, int viewType) { View v=View.inflate(context, R.layout.item,null); return new Vh(v); } @Override public void onBindViewHolder(Vh holder, int position) { Uri uri=Uri.parse(list.get(position).getPic_small()); Log.i("img=============",list.get(position).getPic_small()); holder.img.setImageURI(uri); Log.i("img=============",list.get(position).getTitle()); holder.tv.setText(list.get(position).getTitle()); } @Override public int getItemCount() { return list.size(); } class Vh extends RecyclerView.ViewHolder { SimpleDraweeView img; TextView tv; public Vh(View v) { super(v); img = v.findViewById(R.id.img); tv = v.findViewById(R.id.tv); } } }
一定注意fresco的初始化
Apppackage cui.com.myapplication; import android.app.Application; import com.facebook.drawee.backends.pipeline.Fresco; /** * Created by ZMoffice on 2017.12.1. */ public class App extends Application { @Override public void onCreate() { super.onCreate(); Fresco.initialize(this); } }
retrofit+ok+rxjava+fresco的demo
最新推荐文章于 2019-06-11 16:16:24 发布