У меня есть 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);
}
Здесь я просто передавая идентификатор изображения, который не помогает.
Как мне загрузить его из кеша вместо сети? – theOzmic
Я думаю, что Glide уже делает это. Запустите приложение ehile, подключенное к студии Android, и посмотрите график сети под монитором Android. При открытии этой операции он не будет ничего нового. –