我有一个recyclerview显示从JSON文件的项目上线,recyclerview也有在各列表项的缩略图。我如何通过图像从一个网络到另一个活动recyclerview
当我点击一个项目,它开始了新的活动,我该如何通过缩略图从服务器到新的活动牵强?
这是我的新的活动代码:
public class ItemModal extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_item_modal);
TextView ItemNameV = (TextView) findViewById(R.id.textView);
TextView ItemDescV = (TextView) findViewById(R.id.textView2);
TextView ItemPriceV = (TextView) findViewById(R.id.textView3);
ImageView ItemImageV = (ImageView) findViewById(R.id.imageView);
String itemName = getIntent().getStringExtra("ItemName");
String itemDesc = getIntent().getStringExtra("ItemDesc");
String itemPrice = getIntent().getStringExtra("ItemPrice");
String itemImage = getIntent().getStringExtra("ItemImage");
ItemNameV.setText(itemName);
ItemDescV.setText(itemDesc);
ItemPriceV.setText(itemPrice);
ItemImageV.setId(Integer.parseInt(itemImage));
}
}
这里是适配器代码:
public class AdapterItems extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private Context context;
private LayoutInflater inflater;
List<DataItems> data= Collections.emptyList();
DataItems current;
int currentPos=0;
// create constructor to innitilize context and data sent from MainActivity
public AdapterItems(Context context, List<DataItems> data){
this.context=context;
inflater= LayoutInflater.from(context);
this.data=data;
}
// Inflate the layout when viewholder created
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view=inflater.inflate(R.layout.container_items, parent,false);
MyHolder holder=new MyHolder(view);
return holder;
}
// Bind data
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
// Get current position of item in recyclerview to bind data and assign values from list
MyHolder myHolder= (MyHolder) holder;
DataItems current=data.get(position);
myHolder.textItemName.setText(current.itemName);
myHolder.textDesc.setText(current.itemDesc);
myHolder.textPrice.setText("# " + current.price);
myHolder.textPrice.setTextColor(ContextCompat.getColor(context, R.color.colorAccent));
// load image into imageview using glide
Glide.with(context).load(current.itemImage)
.placeholder(R.drawable.ic_img_error)
.error(R.drawable.ic_img_error)
.into(myHolder.ivItem);
}
// return total item from List
@Override
public int getItemCount() {
return data.size();
}
class MyHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
TextView textItemName;
ImageView ivItem;
TextView textDesc;
TextView textPrice;
// create constructor to get widget reference
public MyHolder(View itemView) {
super(itemView);
textItemName = (TextView) itemView.findViewById(R.id.textItemName);
ivItem = (ImageView) itemView.findViewById(R.id.ivItem);
textDesc = (TextView) itemView.findViewById(R.id.textDesc);
textPrice = (TextView) itemView.findViewById(R.id.textPrice);
itemView.setOnClickListener(this);
}
@Override
public void onClick(View v) {
Intent intent = new Intent(context, ItemModal.class);
intent.putExtra("ItemName", textItemName.getText().toString());
intent.putExtra("ItemImage", ivItem.getId());
intent.putExtra("ItemDesc", textDesc.getText().toString());
intent.putExtra("ItemPrice", textPrice.getText().toString());
Toast.makeText(context, textDesc.getText().toString() , Toast.LENGTH_SHORT).show();
context.startActivity(intent);
}
}
}
这里开始新的活动代码:
public void onClick(View v) {
Intent intent = new Intent(context, ItemModal.class);
intent.putExtra("ItemName", textItemName.getText().toString());
intent.putExtra("ItemImage", ivItem.getId());
intent.putExtra("ItemDesc", textDesc.getText().toString());
intent.putExtra("ItemPrice", textPrice.getText().toString());
Toast.makeText(context, textDesc.getText().toString() , Toast.LENGTH_SHORT).show();
context.startActivity(intent);
}
我在这里只是传递没有帮助的图像的ID。
我如何让它从缓存中,而不是网络负载? – theOzmic
我觉得Glide已经这样做了。运行连接到android studio的应用程序,然后查看Android监视器下的网络图。打开活动时不会降低任何新功能 –