public class AdapterHome extends RecyclerView.Adapter {
private static final int TYPE_ONE = 1;
private static final int TYPE_TWO = 2;
private static final int TYPE_THREE = 3;
private int totalPage;
private int mPageSize=10;
private BeanHome beanHome;
private Context context;
List<String>list = new ArrayList<>();
List<View>listVeiws;
public AdapterHome(BeanHome beanHome, Context context) {
this.beanHome = beanHome;
this.context = context;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view;
if (viewType==TYPE_ONE){
view = LayoutInflater.from(parent.getContext()).inflate(R.layout.ont_item, null);
return new OneHolder(view);
}else if (viewType==TYPE_TWO){
view = LayoutInflater.from(parent.getContext()).inflate(R.layout.two_item, null);
return new TwoHolder(view);
} else{
view = LayoutInflater.from(parent.getContext()).inflate(R.layout.three_item, null);
return new ThreeHolder(view);
}
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int position) {
int itemViewType = getItemViewType(position);
switch (itemViewType){
case TYPE_ONE:
final OneHolder holder1 = (OneHolder) viewHolder;
for (int j = 0; j < beanHome.getData().getBanner().size(); j++) {
list.add(beanHome.getData().getBanner().get(j).getIcon());
}
holder1.xb.setData(list,null);
holder1.xb.setmAdapter(new XBanner.XBannerAdapter() {
@Override
public void loadBanner(XBanner banner, View view, int position) {
Glide.with(context).load(list.get(position)).into((ImageView) view);
}
});
break;
case TYPE_TWO:
TwoHolder holder2 = (TwoHolder) viewHolder;
listVeiws = new ArrayList<>();
//总的页数,取整(这里有三种类型:Math.ceil(3.5)=4:向上取整,只要有小数都+1 Math.floor(3.5)=3:向下取整 Math.round(3.5)=4:四舍五入)
totalPage = (int) Math.ceil(beanHome.getData().getFenlei().size() * 1.0 / mPageSize);
for (int v = 0; v < totalPage; v++) {
GridView gridView = (GridView) LayoutInflater.from(context).inflate(R.layout.grid_view, null);
gridView.setAdapter(new MyGridView(context, beanHome, v, mPageSize));
listVeiws.add(gridView);
}
holder2.vp.setAdapter(new MyPageAdapter(listVeiws));
break;
case TYPE_THREE:
ThreeHolder holder3 = (ThreeHolder) viewHolder;
holder3.rv2.setLayoutManager(new GridLayoutManager(context,2));
holder3.rv2.setAdapter(new MyPageAdapter2(beanHome,context));
holder3.tvvt.setSelected(true);
break;
}
}
@Override
public int getItemCount() {
return 3;
}
@Override
public int getItemViewType(int position) {
if (position==0){
return TYPE_ONE;
}else if (position==1){
return TYPE_TWO;
}else if (position==2){
return TYPE_THREE;
}
return super.getItemViewType(position);
}
private class OneHolder extends RecyclerView.ViewHolder {
XBanner xb;
public OneHolder(View itemView) {
super(itemView);
xb = itemView.findViewById(R.id.xb);
}
}
private class TwoHolder extends RecyclerView.ViewHolder {
ViewPager vp;
public TwoHolder(View itemView) {
super(itemView);
vp = itemView.findViewById(R.id.vp);
}
}
private class ThreeHolder extends RecyclerView.ViewHolder {
private final TextView tvvt;
RecyclerView rv2;
public ThreeHolder(View itemView) {
super(itemView);
rv2 = itemView.findViewById(R.id.rv2);
tvvt = itemView.findViewById(R.id.tvvt);
}
}
private class FourHolder extends RecyclerView.ViewHolder {
public FourHolder(View itemView) {
super(itemView);
}
}
public class AdapterHome extends RecyclerView.Adapter<AdapterHome.ViewHolder> {
private List<HomeBean.DataBean>list;
private Context context;
public AdapterHome(List<HomeBean.DataBean> list, Context context) {
this.list = list;
this.context = context;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_main, null);
ViewHolder holder = new ViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
holder.textView.setText(list.get(position).getTitle());
Glide.with(context).load(list.get(position).getLogo()).into(holder.image_View);
}
@Override
public int getItemCount() {
return list.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
TextView textView;
SimpleDraweeView image_View;
public ViewHolder(@NonNull View itemView) {
super(itemView);
image_View = itemView.findViewById(R.id.image_View);
textView = itemView.findViewById(R.id.textView);
}
}
}
package com.example.administrator.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import butterknife.ButterKnife;
import butterknife.Unbinder;
import android.os.Bundle;
import android.view.View;
import com.example.administrator.myapplication.Adapter.AdapterHome;
import com.example.administrator.myapplication.Bean.HomeBean;
import com.example.administrator.myapplication.Presenter.IPresenterHome;
import com.example.administrator.myapplication.Presenter.PresenterHome;
import com.example.administrator.myapplication.View.IViewHome;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity implements IViewHome {
private RecyclerView recyclerView;
private List<HomeBean.DataBean>data = new ArrayList<>();
private Unbinder unbinder;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = findViewById(R.id.recyclerView);
IPresenterHome presenterHome = new PresenterHome(this);
presenterHome.takeData();
unbinder = ButterKnife.bind(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
unbinder.unbind();
}
@Override
public void getData(HomeBean homeBean) {
data.addAll(homeBean.getData());
AdapterHome adapterHome = new AdapterHome(data, MainActivity.this);
recyclerView.setLayoutManager(new GridLayoutManager(this,2));
recyclerView.setAdapter(adapterHome);
}
}