mainactivity----------------
package com.example.asus.lianxidemo1025.ui.activity; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import com.example.asus.lianxidemo1025.R; import com.example.asus.lianxidemo1025.data.bean.YouBean; import com.example.asus.lianxidemo1025.data.bean.ZuoBean; import com.example.asus.lianxidemo1025.di.IContracet; import com.example.asus.lianxidemo1025.di.presenter.PresenterImpl; import com.example.asus.lianxidemo1025.ui.adapter.YouAdapter; import com.example.asus.lianxidemo1025.ui.adapter.ZuoAdapter; import java.util.List; import butterknife.BindView; import butterknife.ButterKnife; public class MainActivity extends AppCompatActivity implements IContracet.IView { @BindView(R.id.zuo_recyclerview) RecyclerView zuoRecyclerview; @BindView(R.id.you_recyclerview) RecyclerView youRecyclerview; private IContracet.Ipresenter ipresenter; private List<ZuoBean.DataBean> data; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); ipresenter = new PresenterImpl(); ipresenter.attchData(this); ipresenter.infoData(); } @Override public void showData(ZuoBean zuoBean) { data = zuoBean.getData(); LinearLayoutManager linearLayoutManager = new LinearLayoutManager(MainActivity.this); linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL); zuoRecyclerview.setLayoutManager(linearLayoutManager); ZuoAdapter zuoAdapter = new ZuoAdapter(MainActivity.this, data); zuoRecyclerview.setAdapter(zuoAdapter); zuoAdapter.setOnitmeClickLintrener(new ZuoAdapter.onitmeClickLintrener() { @Override public void onclick(int Position) { // Toast.makeText(MainActivity.this, "第"+Position+"条", Toast.LENGTH_SHORT).show(); int cid = data.get(Position).getCid(); ipresenter.youinfo(cid); } }); } @Override public void showyouData(YouBean youBean) { List<YouBean.DataBean> data = youBean.getData(); youRecyclerview.setLayoutManager( new LinearLayoutManager (MainActivity.this, LinearLayoutManager.VERTICAL, false)); YouAdapter fenyeAdapter = new YouAdapter(MainActivity.this, data); youRecyclerview.setAdapter(fenyeAdapter); } @Override protected void onDestroy() { super.onDestroy(); ipresenter.delechData(this); } }
icontreact-----------------
package com.example.asus.lianxidemo1025.di; import com.example.asus.lianxidemo1025.data.bean.YouBean; import com.example.asus.lianxidemo1025.data.bean.ZuoBean; import rx.Observable; public interface IContracet { interface IView { void showData(ZuoBean zuoBean); void showyouData(YouBean youBean); } interface IModel { Observable<ZuoBean> zuo(); Observable<YouBean> you(int cid); } interface Ipresenter<IView> { void attchData(IView iView); void delechData(IView iView); void infoData(); void youinfo(int cid); } }
presenter-----------------
package com.example.asus.lianxidemo1025.di.presenter; import android.util.Log; import com.example.asus.lianxidemo1025.data.bean.YouBean; import com.example.asus.lianxidemo1025.data.bean.ZuoBean; import com.example.asus.lianxidemo1025.di.IContracet; import com.example.asus.lianxidemo1025.di.model.Modelimpl; import java.lang.ref.WeakReference; import rx.Observable; import rx.Observer; import rx.android.schedulers.AndroidSchedulers; import rx.schedulers.Schedulers; public class PresenterImpl implements IContracet.Ipresenter<IContracet.IView> { IContracet.IView iView; private IContracet.IModel iModel; private WeakReference<IContracet.IView> iViewWeakReference; private WeakReference<IContracet.IModel> iModelWeakReference; @Override public void attchData(IContracet.IView iView) { this.iView = iView; iModel = new Modelimpl(); iViewWeakReference = new WeakReference<>(iView); iModelWeakReference = new WeakReference<>(iModel); } @Override public void delechData(IContracet.IView iView) { iViewWeakReference.clear(); iModelWeakReference.clear(); } @Override public void infoData() { Observable<ZuoBean> zuo = iModel.zuo(); zuo.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<ZuoBean>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { Log.i("aaa", "onError: "+e.getMessage().toString()); } @Override public void onNext(ZuoBean zuoBean) { iView.showData(zuoBean); } }); } @Override public void youinfo(int cid) { Observable<YouBean> you = iModel.you(cid); you.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<YouBean>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(YouBean youBean) { iView.showyouData(youBean); } }); } }
model-----------
package com.example.asus.lianxidemo1025.di.model; import com.example.asus.lianxidemo1025.data.bean.YouBean; import com.example.asus.lianxidemo1025.data.bean.ZuoBean; import com.example.asus.lianxidemo1025.data.util.OkHttpUtil; import com.example.asus.lianxidemo1025.di.IContracet; import retrofit2.Retrofit; import rx.Observable; public class Modelimpl implements IContracet.IModel { @Override public Observable<ZuoBean> zuo() { Observable<ZuoBean> zuo = OkHttpUtil.getInstance().apiService.zuo(); return zuo; } @Override public Observable<YouBean> you(int cid) { Observable<YouBean> you = OkHttpUtil.getInstance().apiService.you(cid + ""); return you; } }
okhttp--------
package com.example.asus.lianxidemo1025.di.model; import com.example.asus.lianxidemo1025.data.bean.YouBean; import com.example.asus.lianxidemo1025.data.bean.ZuoBean; import com.example.asus.lianxidemo1025.data.util.OkHttpUtil; import com.example.asus.lianxidemo1025.di.IContracet; import retrofit2.Retrofit; import rx.Observable; public class Modelimpl implements IContracet.IModel { @Override public Observable<ZuoBean> zuo() { Observable<ZuoBean> zuo = OkHttpUtil.getInstance().apiService.zuo(); return zuo; } @Override public Observable<YouBean> you(int cid) { Observable<YouBean> you = OkHttpUtil.getInstance().apiService.you(cid + ""); return you; } }
zuoadapter------------------
package com.example.asus.lianxidemo1025.ui.adapter; import android.content.Context; import android.support.annotation.NonNull; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import com.example.asus.lianxidemo1025.R; import com.example.asus.lianxidemo1025.data.bean.ZuoBean; import java.util.List; public class ZuoAdapter extends RecyclerView.Adapter<ZuoAdapter.Voohodel> { Context context; List<ZuoBean.DataBean> data; onitmeClickLintrener onitmeClickLintrener; public interface onitmeClickLintrener { void onclick(int Position); } public void setOnitmeClickLintrener(ZuoAdapter.onitmeClickLintrener onitmeClickLintrener) { this.onitmeClickLintrener = onitmeClickLintrener; } public ZuoAdapter(Context context, List<ZuoBean.DataBean> data) { this.context = context; this.data = data; } @NonNull @Override public Voohodel onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(context).inflate(R.layout.zuoitme, parent, false); Voohodel voohodel = new Voohodel(view); return voohodel; } @Override public void onBindViewHolder(@NonNull Voohodel holder, int position) { holder.textView.setText(data.get(position).getName()); } @Override public int getItemCount() { return data.size(); } class Voohodel extends RecyclerView.ViewHolder implements View.OnClickListener { private TextView textView; public Voohodel(View itemView) { super(itemView); textView = itemView.findViewById(R.id.zuo_text1); itemView.setOnClickListener(this); } @Override public void onClick(View view) { int layoutPosition = getLayoutPosition(); onitmeClickLintrener.onclick(layoutPosition); } } }
Yyouadapter----------
package com.example.asus.lianxidemo1025.ui.adapter; import android.content.Context; import android.support.annotation.NonNull; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import com.example.asus.lianxidemo1025.R; import com.example.asus.lianxidemo1025.data.bean.YouBean; import java.util.List; public class YouAdapter extends RecyclerView.Adapter<YouAdapter.VooHodel> { Context context; List<YouBean.DataBean> data; public YouAdapter(Context context, List<YouBean.DataBean> data) { this.context = context; this.data = data; } @NonNull @Override public VooHodel onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(context).inflate(R.layout.youitme, parent, false); VooHodel vooHodel =new VooHodel(view); return vooHodel; } @Override public void onBindViewHolder(@NonNull VooHodel holder, final int position) { holder.textView.setText(data.get(position).getName()); List<YouBean.DataBean.ListBean> list = data.get(position).getList(); holder.recyclerView.setLayoutManager(new GridLayoutManager(context,3)); FenneibuAdapter fenneibuAdapter = new FenneibuAdapter(list, context); holder.recyclerView.setAdapter(fenneibuAdapter); fenneibuAdapter.setOnitmeClickLintrener(new FenneibuAdapter.onitmeClickLintrener() { @Override public void setOnclick(int Position) { int pcid = data.get(position).getList().get(Position).getPcid(); } }); } @Override public int getItemCount() { return data.size(); } class VooHodel extends RecyclerView.ViewHolder { private final TextView textView; private final RecyclerView recyclerView; public VooHodel(View itemView) { super(itemView); textView = itemView.findViewById(R.id.you_text1); recyclerView = itemView.findViewById(R.id.you_recyclerView_zi); } } }
fennerbuadapter----------
package com.example.asus.lianxidemo1025.ui.adapter; import android.content.Context; import android.support.annotation.NonNull; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import com.bumptech.glide.Glide; import com.example.asus.lianxidemo1025.R; import com.example.asus.lianxidemo1025.data.bean.YouBean; import java.util.List; public class FenneibuAdapter extends RecyclerView.Adapter<FenneibuAdapter.FenHodel> { private static FenneibuAdapter.onitmeClickLintrener onitmeClickLintrener; List<YouBean.DataBean.ListBean> list; Context context; public FenneibuAdapter(List<YouBean.DataBean.ListBean> list, Context context) { this.list = list; this.context = context; } @NonNull @Override public FenHodel onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(context).inflate(R.layout.youxiaitme, parent, false); FenHodel fenHodel = new FenHodel(view); return fenHodel; } @Override public void onBindViewHolder(@NonNull FenHodel holder, int position) { String icon = list.get(position).getIcon(); Glide.with(context).load(icon).into(holder.imag2); holder.textcc.setText(list.get(position).getName()); } @Override public int getItemCount() { return list.size(); } static class FenHodel extends RecyclerView.ViewHolder implements View.OnClickListener { private final ImageView imag2; private final TextView textcc; public FenHodel(View itemView) { super(itemView); imag2 = itemView.findViewById(R.id.youxia_imag); textcc = itemView.findViewById(R.id.youxia_textcc); itemView.setOnClickListener(this); } @Override public void onClick(View view) { int layoutPosition = getLayoutPosition(); //onitmeClickLintrener.onclick(layoutPosition); com.example.asus.lianxidemo1025.ui.adapter.FenneibuAdapter.onitmeClickLintrener.setOnclick(layoutPosition); } } public interface onitmeClickLintrener { void setOnclick(int Position); } public void setOnitmeClickLintrener(onitmeClickLintrener onitmeClickLintrener) { this.onitmeClickLintrener = onitmeClickLintrener; } }