I want to set the captured image to a dynamically created image in the same gridlayout, but it creates a new grid layout and sets the captured image to a new gridview.
This is my mainactivity.java file
public class MainActivity extends Activity implements AdapterView.OnItemClickListener { GridView gridView; ArrayList<Damage_Item> gridArray = new ArrayList<Damage_Item>(); CustomAdapter_back customGridAdapter; GridLayout mContainerView; int REQUEST_CAMERA = 0, SELECT_FILE = 1; ImageView dynamic_imageview; LinearLayout dynamic_linearview; String image1; ArrayList<String> arrayList_image = new ArrayList<String>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mContainerView = (GridLayout)findViewById(R.id.describedamage_gridview) ; //gridArray.add(new Item(homeIcon,"Home")); gridView = (GridView) findViewById(R.id.gridview1); Button add = (Button)findViewById(R.id.button1); add.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { inflateImageRow(); } }); } public void selectImage() { Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent, REQUEST_CAMERA); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == Activity.RESULT_OK) { if (requestCode == REQUEST_CAMERA) onCaptureImageResult(data); } } public void onCaptureImageResult(Intent data) { Bitmap thumbnail = (Bitmap) data.getExtras().get("data"); Bitmap resized = Bitmap.createScaledBitmap(thumbnail, 140, 150, true); Bitmap dest = Bitmap.createBitmap(resized.getWidth(), resized.getHeight(), Bitmap.Config.ARGB_8888); ByteArrayOutputStream byteArrayOutputStream1 = new ByteArrayOutputStream(); dest.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream1); SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss"); String dateTime = sdf.format(Calendar.getInstance().getTime()); // reading local time in the system Canvas canvas = new Canvas(dest); //bmp is the bitmap to dwaw into Paint paint = new Paint(); canvas.drawBitmap(resized, 0f, 0f, null); paint.setColor(Color.BLACK); canvas.drawRect(1, 145, 100, 130, paint); paint.setColor(getResources().getColor(R.color.orange)); paint.setTextSize(10); paint.setFakeBoldText(true); paint.setTextAlign(Paint.Align.LEFT); float height = paint.measureText("yY"); canvas.drawText(dateTime, 5f, height+130f, paint); ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); dest.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream); byte[] byteArray = byteArrayOutputStream.toByteArray(); String image1 = Base64.encodeToString(byteArray, Base64.DEFAULT); //arrayList_image.add(image1); BitmapDrawable background = new BitmapDrawable(dest); //holder.imageItem.setBackground(background); Damage_Item damage_item = new Damage_Item(); damage_item.setTemp_image(dest); gridArray.add(damage_item); customGridAdapter = new CustomAdapter_back(MainActivity.this, gridArray); gridView.setAdapter(customGridAdapter); /*gridView.setAdapter(customGridAdapter); gridView.setOnItemClickListener(MainActivity.this)*/; } int count; private void inflateImageRow() { LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); final View rowView = inflater.inflate(R.layout.dynamic_row, null); dynamic_imageview = (ImageButton)rowView.findViewById(R.id.dynamic_imageview); dynamic_linearview=(LinearLayout)rowView.findViewById(R.id.dynamic_linear); dynamic_imageview.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //image_flagdynamic_right = true; selectImage(); } }); count= mContainerView.getChildCount()-1; dynamic_imageview.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(final View v) { int parent=((View) v.getParent()).getId(); AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setTitle("Whould you like to delete this image?"); builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { int index = ((View) v.getParent()).getId() + 2; try { mContainerView.removeView((View) v.getParent()); // arrayList_image.remove(((View) v.getParent()).getId()); } catch (IndexOutOfBoundsException e) { e.printStackTrace(); } Toast.makeText(getApplicationContext(), "delete", Toast.LENGTH_LONG).show(); } }); builder.setNegativeButton("No", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }); AlertDialog alert = builder.create(); alert.show(); return false; } }); mContainerView.addView(rowView, mContainerView.getChildCount() - 1); } @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { } }
this is my CustomAdapter_back.java adapter CustomAdapter_back.java
public class CustomAdapter_back extends BaseAdapter { private Context context; private ArrayList<Damage_Item> Damage_Item; LayoutInflater inflater; ImageView button; public CustomAdapter_back(Context context, ArrayList<Damage_Item> Damage_Item) { this.context = context; this.Damage_Item = Damage_Item; inflater = (LayoutInflater) this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } @Override public int getCount() { return Damage_Item.size(); } @Override public Object getItem(int position) { return Damage_Item.get(position); } @Override public long getItemId(int position) { return position; } public View getView(final int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = inflater.inflate(R.layout.row_grid, null); button = (ImageView) convertView.findViewById(R.id.imageview); } else { } button.setImageBitmap(Damage_Item.get(position).getTemp_image()); return convertView; } }
My activity_manin.xml file
<Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_marginTop="26dp" android:padding="11dp" android:text="Add" /> <GridLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/describedamage_gridview" android:columnCount="2" android:layout_below="@+id/button1" android:rowCount="1" android:orientation="horizontal"> <GridView android:id="@+id/gridview1" android:layout_width="match_parent" android:layout_height="match_parent" android:columnWidth="90dp" android:numColumns="2" android:verticalSpacing="10dp" android:horizontalSpacing="10dp" android:stretchMode="columnWidth" android:gravity="center" /> </GridLayout>
row_grid.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" android:padding="5dp" > <ImageView android:id="@+id/imageview" android:layout_width="170dp" android:layout_height="150dp" android:background="@drawable/camera" /> </LinearLayout>