MVP+Fresco+Retrofit实现的一个简单的适配器类

初始化一个接口

public class Api {
    public static  final  String BASE_PATH = "https://api.tianapi.com";
}

初始化Fresco的

public class MyApp extends Application{
    public static Context context;
    @Override
    public void onCreate() {
        super.onCreate();
        Fresco.initialize(this);
        context=this;
    }
}

创建一个Retrofit接口以便于用来网络连接用

public interface Services {
    /**
     * 结合Retrofit+RxJava
     * http://service.meiyinkeqiu.com/service/ads/cptj
     * @param
     * @return
     */
    @GET("/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10")
    Observable<Homes> getJson();
}

创建一个适配器来进行布局加载数据

public class Myadapter extends RecyclerView.Adapter<Myadapter.MyHolder> {
    List<Homes.NewslistBean> newslistBeen;
    Context context;
    SimpleDraweeView image;

    public Myadapter(Context context, List<Homes.NewslistBean> newslistBeen) {
        this.context = context;
        this.newslistBeen = newslistBeen;
    }

    @Override
    public MyHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        MyHolder holder = new MyHolder(LayoutInflater.from(context).inflate(R.layout.item_home, parent, false));
        return holder;
    }

    @Override
    public void onBindViewHolder(MyHolder holder, int position) {
        holder.textView.setText(newslistBeen.get(position).getTitle());
        Uri uri =  Uri.parse(newslistBeen.get(position).getPicUrl());
        DraweeController controller = Fresco.newDraweeControllerBuilder()
                .setUri(uri)
                .setAutoPlayAnimations(true)
                .build();
        image.setController(controller);
    }

    @Override
    public int getItemCount() {
        return newslistBeen.size();
    }

    class MyHolder extends RecyclerView.ViewHolder {
        TextView textView;
        public MyHolder(View itemView) {
            super(itemView);
            image = itemView.findViewById(R.id.image);
            textView = itemView.findViewById(R.id.text);
        }
    }

创建一个Adaper 的model的接口

public interface Imodel {
    void getAdapter();
}

在实现model类里面进行网络请求等操作

public class Mymodel implements Imodel{
    private DataOverListener mDataOverListener;
    @Override
    public void getAdapter() {
        Retrofit retrofit = new Retrofit.Builder().baseUrl(Api.BASE_PATH).addConverterFactory(GsonConverterFactory.create()).addCallAdapterFactory(RxJavaCallAdapterFactory.create()).build();
        Services services = retrofit.create(Services.class);
        Observable<Homes> observable = services.getJson();
        observable.subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<Homes>() {
                    @Override
                    public void onCompleted() {

                    }

                    @Override
                    public void onError(Throwable e) {

                    }

                    @Override
                    public void onNext(Homes myBean) {
                        Myadapter myadapter = new Myadapter(MyApp.context, myBean.getNewslist());
                        mDataOverListener.dataOver(myadapter);
                    }
                });

    }

    public interface DataOverListener{
        void dataOver(Myadapter myadapter);
    }

    public void setmDataOverListener(DataOverListener mDataOverListener) {
        this.mDataOverListener = mDataOverListener;
    }
}


在presenter里面进行一些简单的连接View 和 model操作

public class MyPresenter {
    Mymodel imodel;
    Iview iview;

    public MyPresenter(Iview iview) {
        this.iview = iview;
        this.imodel = new Mymodel();
    }
    public void start(){
        imodel.getAdapter();
        imodel.setmDataOverListener(new Mymodel.DataOverListener() {
            @Override
            public void dataOver(Myadapter myadapter) {
                iview.adapter(myadapter);
            }
        });
    }
}

创建一个View的接口

public interface Iview {
    void adapter(Myadapter myadapter);
}
下面这个就是mainactivity里面进行的一些操作
public class MainActivity extends AppCompatActivity implements Iview{
    RecyclerView recyclerView;
    MyPresenter presenter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        recyclerView = (RecyclerView) findViewById(R.id.recycler);
        presenter = new MyPresenter(MainActivity.this);
        presenter.start();
    }

    @Override
    public void adapter(Myadapter myadapter) {
        recyclerView.setLayoutManager(new GridLayoutManager(MyApp.context,2));
        recyclerView.setAdapter(myadapter);
    }
}



还有下面要用到的一些依赖什么的

compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.facebook.fresco:fresco:0.11.0'
compile 'com.squareup.retrofit2:retrofit:2.0.1'
compile 'com.squareup.retrofit2:converter-gson:2.0.1'
compile 'com.squareup.retrofit2:adapter-rxjava:2.0.1'
compile 'io.reactivex:rxandroid:1.1.0'
compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'
compile 'com.android.support:mediarouter-v7:25.0.0'
compile 'com.android.support:appcompat-v7:25.0.0'
compile 'com.android.support:recyclerview-v7:25.0.0'


子布局

<com.facebook.drawee.view.SimpleDraweeView
    android:id="@+id/image"
    android:layout_width="200dp"
    android:layout_height="200dp" />
<TextView
    android:id="@+id/text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值