Reputation: 172
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 ?
@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
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