David Adam
David Adam

Reputation: 172

if inserting multi image into multi imageview

If i want to insert image into imageview, for example 8 numbers of images into 8 numbers imageview. I have tried the follow code. Somehow there are some problem, if i inserting the 1st image into the 1st imageview and the result is fine. But if i continue to insert the 2nd image into the 2nd imageview. The 1st imageview will change to the same image as 2nd imageview. Its been cracking my head, What is the problem of my code ?

enter image description here

 @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View v = inflater.inflate(R.layout.fragment_create_color_qr, container, false);

    img1 = (ImageView)v.findViewById(R.id.image1);
    img2 = (ImageView)v.findViewById(R.id.image2);
    img3 = (ImageView)v.findViewById(R.id.image3);
    img4 = (ImageView)v.findViewById(R.id.image4);
    img5 = (ImageView)v.findViewById(R.id.image5);
    img6 = (ImageView)v.findViewById(R.id.image6);
    img7 = (ImageView)v.findViewById(R.id.image7);
    img8 = (ImageView)v.findViewById(R.id.image8);


    img1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            openImg();
            i1 = true;
            //i2 = false; i3 = false; i4 = false;
            //i5 = false; i6 = false; i7 = false; i8 = false;
        }
    });

    img2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v2) {
            openImg();
            i2 = true;
        }
    });

    img3.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            openImg();
            i3 = true;
        }
    });

    img4.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            openImg();
            i4 = true;
        }
    });

    img5.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            openImg();
            i5 = true;
        }
    });

    img6.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            openImg();
            i6 = true;
        }
    });

    img7.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            openImg();
            i7 = true;
        }
    });

    img8.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            openImg();
            i8 = true;
        }
    });

    return v;
}//end of OnCreateView

and here is the method openImg and onActivityResult

 public void openImg(){
    Intent photoPic = new Intent(Intent.ACTION_PICK);
    photoPic.setType("image/*");
    startActivityForResult(photoPic, SELECT_PHOTO);
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    switch (requestCode){
        case SELECT_PHOTO:
            if(resultCode == RESULT_OK){

                Uri selectedImage = data.getData();
                img1.setImageURI(selectedImage);
                InputStream imageStream = null;

                try {
                    //getting the image
                    imageStream = getActivity().getContentResolver().openInputStream(selectedImage);
                    imageStream.close();
                }catch (IOException e){
                    e.printStackTrace();
                }//end try-catch


                if(i1 == true){
                    img1.setImageURI(selectedImage);
                    i1 = false;
                    b1 = true;
                }
                if(i2 == true){
                    img2.setImageURI(selectedImage);
                    i2 = false;
                    b2 = true;
                }
                if(i3 == true){
                    img3.setImageURI(selectedImage);
                    i3 = false;
                    b3 = true;
                }
                if(i4 == true){
                    img4.setImageURI(selectedImage);
                    i4 = false;
                    b4 = true;
                }
                if(i5 == true){
                    img5.setImageURI(selectedImage);
                    i5 = false;
                    b5 = true;
                }
                if(i6 == true){
                    img6.setImageURI(selectedImage);
                    i6 = false;
                    b6 = true;
                }
                if(i7 == true){
                    img7.setImageURI(selectedImage);
                    i7 = false;
                    b8 = true;
                }
                if(i8 == true){
                    img8.setImageURI(selectedImage);
                    i8 = false;
                    b8 = true;
                }
            }//end of 1st IF

            else{
            Toast.makeText(getContext(),"Fail To Get Image", Toast.LENGTH_SHORT).show();
        }

    }//end of Switch
}//end of Method

Upvotes: 0

Views: 84

Answers (1)

Madhur
Madhur

Reputation: 3353

As i can see below code is the problem

if(resultCode == RESULT_OK){

                Uri selectedImage = data.getData();
                //below line is the problem, you are repeating this for every result remove it
                img1.setImageURI(selectedImage);
                InputStream imageStream = null;

can I know why its better to use recyclerview ?

It removes more of all the boiler plate code you are doing. And it will be more of a dynamic data.

Upvotes: 1

Related Questions