【发布时间】:2018-09-02 03:57:02
【问题描述】:
我想为一个电子商务应用显示产品图片,请让我知道我的代码有什么问题,因为它没有在 Recycler 视图中显示图片。
RecyclerAdapter 类:
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private ArrayList<Record_> mitems = new ArrayList<>();
private LayoutInflater layoutInflater;
private Context mcontext;
public MyAdapter(ArrayList<Record_> mitems, LayoutInflater layoutInflater, Context mcontext) {
this.mitems = mitems;
this.layoutInflater = layoutInflater;
this.mcontext = mcontext;
}
public MyAdapter(Context context, ArrayList<Record_> items) {
this.layoutInflater = LayoutInflater.from((Context) context);
this.mitems = items;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = layoutInflater.from(parent.getContext()).inflate(R.layout.item_display_layout,parent,false);
/*ImageView imageView = new ImageView(mcontext);
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setLayoutParams(new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT
));*/
ViewHolder viewHolder = new ViewHolder(view);
return viewHolder;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
//Picasso.with(mcontext).load(mitems.get(position).getProductImageUrl());
//holder.imageView.setImageURI(Uri.parse(mitems.get(position).getProductImageUrl()));
//Picasso.with(holder.imageView.getContext());
Picasso.with(holder.imageView.getContext()).load(mitems.get(position).getProductImageUrl()).fit().centerCrop().into(holder.imageView);
holder.mtextView.setText(mitems.get(position).getProductDescription() );
holder.priceTv.setText("$"+mitems.get(position).getSkuFinalPrice());
}
@Override
public int getItemCount() {
return mitems.size();
}
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
public TextView mtextView, priceTv;
public ImageView imageView;
public ViewHolder(View view){
super(view);
imageView = view.findViewById(R.id.ivProduct);
mtextView = view.findViewById(R.id.descriptionTV);
priceTv = view.findViewById(R.id.priceTV);
}
ProductDisplayActivity.java
public class ProductDisplayActivity extends AppCompatActivity{
private RecyclerView recyclerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_product_display);
recyclerView = findViewById(R.id.products);
GridLayoutManager gridLayoutManager = new GridLayoutManager(this,2);
recyclerView.setLayoutManager(gridLayoutManager);
getProducts(pod);
private void getProducts(String id) {
CategoryInterface productInterface =RetrObj.getRetro().create(CategoryInterface.class);
Call<ProductRespose> productCall = productInterface.getRecords(id);
//productCall = productInterface.getProductImageUrl(id);
productCall.enqueue(new Callback<ProductRespose>() {
@Override
public void onResponse(Call<ProductRespose> call, Response<ProductRespose> response) {
int statusCode = response.code();
if(statusCode==HttpURLConnection.HTTP_OK){
ProductRespose productRecord = response.body();
myAdapter = new MyAdapter(ProductDisplayActivity.this,productRecord.getRecords().get(0).getAttributes().getRecords());
recyclerView.setAdapter(myAdapter);
// recyclerView.notify();
}
}
@Override
public void onFailure(Call<ProductRespose> call, Throwable t) {
Toast.makeText(ProductDisplayActivity.this, "Something Went Wrong", Toast.LENGTH_SHORT).show();
}
});
}
}
我正在使用 Retrofit 从 API 获取数据,列表显示在回收站视图中,但图像不是来自产品。我用毕加索显示图像,但请告诉我错误。
【问题讨论】:
-
您能告诉我们您的 api 响应吗? json?
-
也是你的xml文件
-
您确定您的图片网址正确吗?
-
你也检查过 logcat 的警告或错误吗?
-
是的图片网址是正确的。
标签: android api android-recyclerview retrofit picasso