private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); } }; private ProductBean productBean; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); initView(); } private void initView() { product = findViewById(R.id.productRv); neir = findViewById(R.id.edit_nr); } public void sousuo(View view) { HashMap<String,String> parms = new HashMap<>(); parms.put("keywords",neir.getText().toString()); OkHttpUtils.getinstance().getData(API.PRODUCT_URL, parms, new RequestCallBack() { @Override public void failure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) { String request = null; if(response.code()==200){ try { request = response.body().string(); //解析 Productjson(request); } catch (Exception e) { e.printStackTrace(); } } } }); } private void Productjson(String request) { productBean = new Gson().fromJson(request, ProductBean.class); Log.i("xxx", productBean.data.get(0).title); handler.post(new Runnable() { @Override public void run() { fileDatas(); } }); } private void fileDatas() { ProductAdapter adapter = new ProductAdapter(LoginActivity.this, productBean.data); product.setLayoutManager(new GridLayoutManager(this,2)); product.setAdapter(adapter);
适配器
public class ProductAdapter extends RecyclerView.Adapter<ProductAdapter.MyViewHolder> {
private Context context;
private List<ProductBean.Product> list;
private OnItemClickListener onItemClickListener;
public ProductAdapter(Context context, List<ProductBean.Product> list) {
this.context = context;
this.list = list;
}
/**
* 创建viewholder 和渲染布局
*
* @param parent
* @param viewType
* @return
*/
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.product_item_layout, parent, false);
MyViewHolder myViewHolder = new MyViewHolder(view);
return myViewHolder;
}
/**
* 绑定viewholder,作用:展示数据
*
* @param holder
* @param position
*/
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, final int position) {
ProductBean.Product product = list.get(position);
//with 绑定上下文,load加载网络资源(url),into:把bitmap设置给当前控件
String[] imageUrls = product.images.split("\\|");
if (imageUrls != null && imageUrls.length > 0) {
Glide.with(context).load(imageUrls[0]).into(holder.iv);//
}
holder.tv.setText(product.title);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (onItemClickListener != null) {
onItemClickListener.onItemClick(position);
}
}
});
}
@Override
public int getItemCount() {
return list.size() == 0 ? 0 : list.size();
}
public void loadData(List<ProductBean.Product> data) {
if (this.list!=null){
this.list.addAll(data);
notifyDataSetChanged();
}
}
class MyViewHolder extends RecyclerView.ViewHolder {
private ImageView iv;
private TextView tv;
public MyViewHolder(View itemView) {
super(itemView);
iv = itemView.findViewById(R.id.iv);
tv = itemView.findViewById(R.id.tv);
}
}
public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
this.onItemClickListener = onItemClickListener;
}
public interface OnItemClickListener {
void onItemClick(int position);
}
}