Mình lưu một paint với dạng image. Sau đó chuyển image này sang bitmap để lưu vào SQLite. Nhận được lỗi java.lang.ArrayIndexOutOfBoundsException
ở dòng code Bitmap bitmap = BitmapFactory.decodeByteArray(paint, 100, paint.length);
. Làm thế nào để khắc phục ?
CanvasActivity.java
buttonSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
relativeLayout.setDrawingCacheEnabled(true);
Bitmap bitmap = relativeLayout.getDrawingCache();
ByteArrayOutputStream byteArray = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, byteArray);
byte[] paint = byteArray.toByteArray();
MainActivity.database.Insert_Item(editTextName.getText().toString().trim(), paint);
Toast.makeText(CanvasActivity.this, "Added a paint.", Toast.LENGTH_SHORT).show();
startActivity(new Intent(CanvasActivity.this, MainActivity.class));
}
});
PaintAdapter.java
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
// Initialize view and mapping
if (convertView == null) {
viewHolder = new ViewHolder();
LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = layoutInflater.inflate(layout, null);
viewHolder.textViewName = (TextView) convertView.findViewById(R.id.textViewName);
viewHolder.imageView = (ImageView) convertView.findViewById(R.id.imageView);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
// Set items
PaintItem paintItem = itemList.get(position);
viewHolder.textViewName.setText(paintItem.getName());
// Convert byte[] -> bitmap
byte[] paint = paintItem.getPaint();
Bitmap bitmap = BitmapFactory.decodeByteArray(paint, 100, paint.length);
viewHolder.imageView.setImageBitmap(bitmap);
return convertView;
}
private class ViewHolder {
ImageView imageView;
TextView textViewName;
}