适配器
九宫格
package com.qh.***.***.adapter;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import com.bumptech.glide.Glide;
import com.qh.***.***.R;
import com.qh.***.***.bean.JiuBean;
import java.util.List;
public class JiuAdapter extends BaseAdapter {
private Context context;
private List<JiuBean.DataBean> list;
public JiuAdapter(Context context, List<JiuBean.DataBean> list) {
this.context = context;
this.list = list;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder = null;
if (convertView == null) {
viewHolder = new ViewHolder();
convertView = View.inflate(context, R.layout.img_item, null);
viewHolder.imageView = convertView.findViewById(R.id.img);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
Glide.with(context).load(list.get(position).getIcon()).into(viewHolder.imageView);
return convertView;
}
class ViewHolder {
private ImageView imageView;
}
}
列表展示
package com.qh.***.***.adapter;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.qh.***.***.R;
import com.qh.***.***.bean.Product;
import java.util.List;
import java.util.Random;
public class ProductAdapter extends RecyclerView.Adapter<ProductAdapter.ViewHolder> {
private Context context;
private List<Product.DataBean> list;
public ProductAdapter(Context context, List<Product.DataBean> list) {
this.context = context;
this.list = list;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View inflate = View.inflate(context, R.layout.itme_layout, null);
ViewHolder viewHolder = new ViewHolder(inflate);
return viewHolder;
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
Glide.with(context).load(list.get(position).getPic_url()).into(holder.imageView);
holder.textView.setText(list.get(position).getName());
// ***----------->关键代码实现瀑布流***
Random random = new Random();
ViewGroup.LayoutParams layoutParams = holder.textView.getLayoutParams();
layoutParams.height = random.nextInt(200)+50;
holder.textView.setLayoutParams(layoutParams);
}
@Override
public int getItemCount() {
return list.size();
}
class ViewHolder extends RecyclerView.ViewHolder {
private ImageView imageView;
private TextView textView;
public ViewHolder(View itemView) {
super(itemView);
imageView = itemView.findViewById(R.id.image_view);
textView = itemView.findViewById(R.id.text_view);
}
}
}
bean``
gsonformat生成
MVP
view
package com.qh.***.***.home.view;
import com.qh.***.***.bean.JiuBean;
import com.qh.***.***.bean.Product;
import java.util.List;
public interface IView {
void getCategory(List<JiuBean.DataBean> list);
void getProduct(List<Product.DataBean> list);
void failed(Exception e);
}
model
package com.qh.***.***.home.model;
import com.qh.***.***.net.HttpUtils;
import com.qh.***.***.net.ICallBack;
import java.lang.reflect.Type;
public class Model {
public void getData(String url, ICallBack callBack, Type type){
Https见---------->https://blog.csdn.net/mingxiangzhimin/article/details/84206648
HttpUtils.getInstance().get(url,callBack,type);
}
}
presenter
package com.qh.***.***.home.presenter;
import android.view.View;
import com.google.gson.reflect.TypeToken;
import com.qh.***.***.bean.JiuBean;
import com.qh.***.***.bean.Product;
import com.qh.***.***.home.model.Model;
import com.qh.***.***.home.view.IView;
import com.qh.***.***.net.ICallBack;
import java.lang.reflect.Type;
public class Presenter {
//model
private Model model;
//view
private IView iView;
public Presenter(IView iView) {
this.iView = iView;
model = new Model();
}
//九宫格数据
public void getCategory() {
Type type = new TypeToken<JiuBean>() {
}.getType();
model.getData("http://www.zhaoapi.cn/product/getCatagory", new ICallBack() {
@Override
public void success(Object obj) {
JiuBean category = (JiuBean) obj;
if (category != null) {
iView.getCategory(category.getData());
}
}
@Override
public void failed(Exception e) {
iView.failed(e);
}
}, type);
}
//列表数据
public void getProduct() {
String url = "http://www.wanandroid.com/tools/mockapi/6523/restaurants_offset_0_limit_4";
Type type = new TypeToken<Product>() {
}.getType();
model.getData(url, new ICallBack() {
@Override
public void success(Object obj) {
Product product = (Product) obj;
if (product != null) {
iView.getProduct(product.getData());
}
}
@Override
public void failed(Exception e) {
iView.failed(e);
}
}, type);
}
}
MainActivity
package com.qh.***.***;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.StaggeredGridLayoutManager;
import android.widget.GridView;
import android.widget.Toast;
import com.qh.***.***.adapter.JiuAdapter;
import com.qh.***.***.adapter.ProductAdapter;
import com.qh.***.***.bean.JiuBean;
import com.qh.***.***.bean.Product;
import com.qh.***.***.home.presenter.Presenter;
import com.qh.***.***.home.view.IView;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity implements IView {
private GridView mGridView;
private RecyclerView mRecyView;
private Presenter presenter;
private List<Product.DataBean> productList;
private List<JiuBean.DataBean> jiuList;
private JiuAdapter jiuAdapter;
private ProductAdapter productAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initData();
}
private void initData() {
//调用p层
presenter = new Presenter(this);
//presenter.attach(this);
presenter.getCategory();
presenter.getProduct();
productList = new ArrayList<>();
jiuList = new ArrayList<>();
jiuAdapter = new JiuAdapter(this, jiuList);
mGridView.setAdapter(jiuAdapter);
productAdapter = new ProductAdapter(this, productList);
RecyclerView.LayoutManager layoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
mRecyView.setLayoutManager(layoutManager);
mRecyView.setAdapter(productAdapter);
}
private void initView() {
mGridView = findViewById(R.id.grid_view);
mRecyView = findViewById(R.id.recy_view);
}
//view实现的方法
@Override
public void getCategory(List<JiuBean.DataBean> list) {
if (list != null) {
jiuList.clear();
jiuList.addAll(list);
jiuAdapter.notifyDataSetChanged();
}
}
@Override
public void getProduct(List<Product.DataBean> list) {
if (list != null) {
productList.clear();
productList.addAll(list);
productAdapter.notifyDataSetChanged();
}
}
@Override
public void failed(Exception e) {
Toast.makeText(this, "网络异常", Toast.LENGTH_SHORT).show();
}
@Override
protected void onDestroy() {
super.onDestroy();
}
}
需要的依赖
implementation 'com.github.bumptech.glide:glide:4.8.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.8.0'
implementation 'com.squareup.okhttp3:okhttp:3.11.0'
implementation 'com.google.code.gson:gson:2.8.1'
implementation 'com.android.support:recyclerview-v7:27.1.1'