一,NewsModel
public class NewsModel { public void newsModel(String url, final MOkCallback mOkCallback){ OkHttpUtil instence = OkHttpUtil.getInstence(); instence.doGet(url, new OkHttpUtil.OkCallback() { @Override public void getSuccess(String json) { //成功 if(mOkCallback!=null){ mOkCallback.getSuccess(json); } } @Override public void getError(Exception e) { //失败 if(mOkCallback!=null){ mOkCallback.getError(e); } } }); } public interface MOkCallback{ void getSuccess(String json); void getError(Exception e); } }
二,NewsPersenter
public class NewsPresenter extends BasePresenter<NewsView>{ private NewsModel newsModel; public NewsPresenter(NewsView view) { super(view); } public void newsPresenter(String url){ newsModel.newsModel(url, new NewsModel.MOkCallback() { @Override public void getSuccess(String json) { //成功 if(view!=null){ view.getSuccess(json); } } @Override public void getError(Exception e) { //失败 if(view!=null){ view.getError(e); } } }); } @Override protected void initModel() { newsModel = new NewsModel(); } }
三,NewsActivity
public class MainActivity extends BaseActivity<NewsPresenter> implements NewsView { private static final String TAG = "MainActivity------"; private XRecyclerView recyclerView; private MyAdapter myAdapter; int page=1; @Override protected void initListener() { } @Override protected void initData() { presenter.newsPresenter(HttpUrl.News_URL+page); } @Override protected void initview() { recyclerView = findViewById(R.id.revyleview); recyclerView.setPullRefreshEnabled(true);//设置上拉刷新 recyclerView.setLoadingMoreEnabled(true);//设置下拉加载 } @Override protected NewsPresenter presenterById() { return new NewsPresenter(this); } @Override protected int setView() { return R.layout.activity_main; } @Override public void getSuccess(String json) { //成功 Log.d(TAG, "activity成功: "+json); Gson gson=new Gson(); NewsBean newsBean = gson.fromJson(json, NewsBean.class); List<NewsBean.DataBeanX.DataBean> data = newsBean.getData().getData(); //创建适配器 myAdapter = new MyAdapter(MainActivity.this,data); LinearLayoutManager linearLayoutManager=new LinearLayoutManager(this); recyclerView.setLayoutManager(linearLayoutManager); recyclerView.setAdapter(myAdapter); recyclerView.setLoadingListener(new XRecyclerView.LoadingListener() { @Override public void onRefresh() { //上拉刷新 page=1; recyclerView.refreshComplete(); } @Override public void onLoadMore() { //下拉加载 page++; recyclerView.loadMoreComplete(); } }); myAdapter.setOnItemClickListener(new MyAdapter.OnItemClickListener() { @Override public void OnItemClickListener(View v, int position) { ObjectAnimator objectAnimator=ObjectAnimator.ofFloat(v,"alpha",1f,0f,1f); objectAnimator.setDuration(3000); objectAnimator.start(); } }); } @Override public void getError(Exception e) { //失败 } }
四 适配器
public class MyAdapter extends RecyclerView.Adapter { private Context context; private List<NewsBean.DataBeanX.DataBean> list; private static final int one=1; private static final int two=2; public MyAdapter(Context context, List<NewsBean.DataBeanX.DataBean> list) { this.context = context; this.list = list; } @NonNull @Override public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { if(viewType==one){ View inflate1 = LayoutInflater.from(context).inflate(R.layout.item01_adapter, parent, false); ViewHolder01 holder01=new ViewHolder01(inflate1); return holder01; }else{ View inflate2 = LayoutInflater.from(context).inflate(R.layout.item02_adapter, parent, false); ViewHolder2 holder2=new ViewHolder2(inflate2); return holder2; } } @Override public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, final int position) { if(holder instanceof ViewHolder01){ String url = "http://365jia.cn/uploads/"; ViewHolder01 viewHolder01= (ViewHolder01) holder; viewHolder01.t1.setText(list.get(position).getTitle()); viewHolder01.t3.setText(list.get(position).getViews()+"评论"); viewHolder01.t4.setText(list.get(position).getViews_label()+"赞"); String pic1 = list.get(position).getPics().get(0); //p1图片路径 //加载图片 ImageLoader.getInstance().displayImage(url+pic1,viewHolder01.item1_imageView, MyApp.getOptions()); }else if(holder instanceof ViewHolder2){ String url = "http://365jia.cn/uploads/"; ViewHolder2 holder2= (ViewHolder2) holder; holder2.item2_t1.setText(list.get(position).getTitle()); //获取图片路径 String i1 = list.get(position).getPics().get(0); String i2 = list.get(position).getPics().get(1); String i3 = list.get(position).getPics().get(2); //加载图片 ImageLoader.getInstance().displayImage(url+i1,holder2.item2_image1,MyApp.getOptions()); ImageLoader.getInstance().displayImage(url+i2,holder2.item2_image2,MyApp.getOptions()); ImageLoader.getInstance().displayImage(url+i3,holder2.item2_image3,MyApp.getOptions()); //点击图片 图片变透明 ((ViewHolder2) holder).item2_image1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onItemClickListener.OnItemClickListener(v,position); } }); } } @Override public int getItemCount() { return list==null ? 0:list.size(); } @Override public int getItemViewType(int position) { List<String> pics = list.get(position).getPics(); if(pics.size()==one){ return one; } return two; } class ViewHolder01 extends RecyclerView.ViewHolder{ private TextView t1,t3,t4; private ImageView item1_imageView; public ViewHolder01(View itemView) { super(itemView); t1=itemView.findViewById(R.id.tv1_title1); t3=itemView.findViewById(R.id.tv1_title3); t4=itemView.findViewById(R.id.tv1_title4); item1_imageView=itemView.findViewById(R.id.img1_image1); } } class ViewHolder2 extends RecyclerView.ViewHolder{ private TextView item2_t1; private ImageView item2_image1,item2_image2,item2_image3; public ViewHolder2(View itemView) { super(itemView); item2_t1=itemView.findViewById(R.id.tv2_title1); item2_image1=itemView.findViewById(R.id.image1); item2_image2=itemView.findViewById(R.id.image2); item2_image3=itemView.findViewById(R.id.image3); } } //给recyleview自定义接口 OnItemClickListener onItemClickListener; public void setOnItemClickListener(OnItemClickListener onItemClickListener) { this.onItemClickListener = onItemClickListener; } public interface OnItemClickListener{ void OnItemClickListener(View v,int position); } }