1主页面布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".view.activity.MainActivity">
<com.jcodecraeer.xrecyclerview.XRecyclerView
android:id="@+id/XRecyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent">
</com.jcodecraeer.xrecyclerview.XRecyclerView>
</RelativeLayout>
2MainActivity
package com.example.recyclerview.view.activity;
import android.support.v7.widget.LinearLayoutManager;
import com.example.recyclerview.R;
import com.example.recyclerview.model.bean.NewsBean;
import com.example.recyclerview.presenter.MainPresenter;
import com.example.recyclerview.view.adapter.MyAdapter;
import com.example.recyclerview.view.interfaces.IMainView;
import com.jcodecraeer.xrecyclerview.XRecyclerView;
import java.util.List;
public class MainActivity extends BaseActivity implements IMainView<NewsBean> {
private MainPresenter mainPresenter;
private XRecyclerView xRecyclerView;
private MyAdapter myAdapter;
@Override
protected int bindLayout() {
return R.layout.activity_main;
}
@Override
protected void initView() {
xRecyclerView = findViewById(R.id.XRecyclerView);
}
@Override
protected void initData() {
mainPresenter = new MainPresenter();
mainPresenter.loadDataFromNer();
mainPresenter.setView(this);
}
@Override
protected void bindEvent() {
}
@Override
protected void onDestroy() {
super.onDestroy();
mainPresenter.datachView();
}
@Override
public void onSuccess(NewsBean newsBean) {
List<NewsBean.ItemsBean> items = newsBean.getItems();
myAdapter = new MyAdapter(this);
myAdapter.setData(items);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
xRecyclerView.setLayoutManager(linearLayoutManager);
xRecyclerView.setAdapter(myAdapter);
xRecyclerView.setLoadingMoreEnabled(true);
xRecyclerView.setLoadingListener(new XRecyclerView.LoadingListener() {
@Override
public void onRefresh() {
//下拉刷新
mainPresenter.loadDataFromNer();
}
@Override
public void onLoadMore() {
//上拉加载
mainPresenter.loadDataFromNer();
}
});
xRecyclerView.refreshComplete();//关闭下拉
xRecyclerView.loadMoreComplete();//关闭上拉
}
@Override
public void onErr(String err) {
}
}
3adapter
package com.example.recyclerview.view.adapter;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.example.recyclerview.R;
import com.example.recyclerview.model.bean.NewsBean;
import com.squareup.picasso.Picasso;
import java.util.ArrayList;
import java.util.List;
public class MyAdapter extends RecyclerView.Adapter {
private Context context;
private List<NewsBean.ItemsBean> items=new ArrayList<>();
public MyAdapter(Context context) {
this.context = context;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
//getItemViewType()
View view;
RecyclerView.ViewHolder viewHolder = null;
switch (i) {
case 0:
view = View.inflate(context, R.layout.more_item_0, null);
viewHolder = new MyAdapterViewHolder0(view);
break;
case 1:
view = View.inflate(context, R.layout.more_item_1, null);
viewHolder = new MyAdapterViewHolder1(view);
break;
case 2:
view = View.inflate(context, R.layout.more_item_2, null);
viewHolder = new MyAdapterViewHolder2(view);
break;
}
return viewHolder;
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
NewsBean.ItemsBean bean = items.get(i);
if (viewHolder instanceof MyAdapterViewHolder0) {
((MyAdapterViewHolder0) viewHolder).mTitle.setText(bean.getTitle());
((MyAdapterViewHolder0) viewHolder).mDesc.setText(bean.getDesc());
Picasso.with(context).load(bean.getImage()).into(((MyAdapterViewHolder0) viewHolder).mIamge);
} else if (viewHolder instanceof MyAdapterViewHolder1) {
List<NewsBean.ItemsBean.ImagesBean> imagesBean = bean.getImages();
Picasso.with(context).load(imagesBean.get(0).getPic()).into(((MyAdapterViewHolder1) viewHolder).mIamge1);
Picasso.with(context).load(imagesBean.get(1).getPic()).into(((MyAdapterViewHolder1) viewHolder).mIamge2);
Picasso.with(context).load(imagesBean.get(2).getPic()).into(((MyAdapterViewHolder1) viewHolder).mIamge3);
} else if (viewHolder instanceof MyAdapterViewHolder2) {
((MyAdapterViewHolder2) viewHolder).mTitle.setText(bean.getTitle());
}
}
@Override
public int getItemCount() {
return items.size();
}
@Override
public int getItemViewType(int position) {
super.getItemViewType(position);
int type = items.get(position).getType();//返回 0 1 2
return type;
}
public void setData(List<NewsBean.ItemsBean> items) {
this.items = items;
notifyDataSetChanged();
}
//传递数据
/*public void setData(List<NewsBean.ItemsBean> data) {
this.data = data;
notifyDataSetChanged();
}*/
private class MyAdapterViewHolder0 extends RecyclerView.ViewHolder {
TextView mTitle, mDesc;
ImageView mIamge;
public MyAdapterViewHolder0(@NonNull View itemView) {
super(itemView);
mIamge = (ImageView) itemView.findViewById(R.id.image);
mTitle = (TextView) itemView.findViewById(R.id.tv_title);
mDesc = (TextView) itemView.findViewById(R.id.tv_desc);
}
}
private class MyAdapterViewHolder1 extends RecyclerView.ViewHolder {
ImageView mIamge1, mIamge2, mIamge3;
public MyAdapterViewHolder1(@NonNull View itemView) {
super(itemView);
mIamge1 = (ImageView) itemView.findViewById(R.id.image1);
mIamge2 = (ImageView) itemView.findViewById(R.id.image2);
mIamge3 = (ImageView) itemView.findViewById(R.id.image3);
}
}
private class MyAdapterViewHolder2 extends RecyclerView.ViewHolder {
TextView mTitle;
public MyAdapterViewHolder2(@NonNull View itemView) {
super(itemView);
mTitle = (TextView) itemView.findViewById(R.id.tv_title);
}
}
}
4每个条目布局自己随意