У меня есть First Activity
с recyclerview
, содержащим 3 элемента, которые отправляются через связку в следующем Activity
.2 текстовых элемента легко получить.
Однако, когда я добавляю image
путем преобразования растрового изображения, он отображает случайное изображение из списка элементов предыдущего действия.
Здесьмой recyclerview
adapter
код первого действия:
public class FurnitureAdapter extends RecyclerView.Adapter<FurnitureAdapter.ViewHolder> {
//All methods in this adapter are required for a bare minimum recyclerview adapter
private ArrayList<ItemsModel> itemList;
private Context context;
private Bitmap bitmap;
private BitmapDrawable bitmapDrawable;
// Constructor of the class
public FurnitureAdapter(ArrayList<ItemsModel> itemList, Context context) {
this.itemList = itemList;
this.context = context;
}
// get the size of the list
@Override
public int getItemCount() {
return itemList == null ? 0 : itemList.size();
}
// specify the row layout file and click for each row
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.custom_recycler_item, parent, false);
ViewHolder myViewHolder = new ViewHolder(view);
return myViewHolder;
}
// load data in each row element
@Override
public void onBindViewHolder(final ViewHolder holder, final int listPosition) {
ImageView imageView = holder.imageView;
TextView title = holder.title;
TextView description = holder.description;
title.setText(itemList.get(listPosition).getTitle());
description.setText(itemList.get(listPosition).getDescription());
imageView.setImageDrawable(itemList.get(listPosition).getImage());
//TODO: Use this line to set drawable in a variable
bitmapDrawable = (BitmapDrawable) itemList.get(listPosition).getImage();
}
class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
public ImageView imageView;
public TextView title, description;
public ViewHolder(View itemView) {
super(itemView);
itemView.setOnClickListener(this);
imageView = (ImageView) itemView.findViewById(R.id.item_image_view);
title = (TextView) itemView.findViewById(R.id.item_title);
description = (TextView) itemView.findViewById(R.id.item_description);
}
@Override
public void onClick(View v) {
Intent i = new Intent(context, ItemDescriptionsActivity.class);
Bundle bundle = new Bundle();
bundle.putString("item_title", title.getText().toString());
bundle.putString("item_description", description.getText().toString());
//Lines added to get BitmapDrawable and then get bitmap from bitmapDrawable
bitmapDrawable = (BitmapDrawable) itemList.get(listPosition).getImage();
bitmap = bitmapDrawable.getBitmap();
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream);
byte[] bytes = byteArrayOutputStream.toByteArray();
i.putExtra("picture", bytes);
i.putExtras(bundle);
context.startActivity(i);
}
} }
А вот мой следующий код активности получения пакета:
if (getIntent().getExtras() != null) {
bundle = getIntent().getExtras();
itemTitle.setText(bundle.getString("item_title"));
itemDescription.setText(bundle.getString("item_description"));
//Get Image and conversion
byte[] bytes = bundle.getByteArray("picture");
Bitmap bmp = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
itemImage.setImageBitmap(bmp);
}