这是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层
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);
}
这是p层
package 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);
}
});
}
}
mainactivity
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();
}
}
适配器
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);
}
}
}
bean类可以自己替换,拦截器也可以自定义,
一定注意fresco的初始化
App
package 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);
}
}