如果将多图像插入多图像视图
if inserting multi image into multi imageview
如果我想插入图片到imageview
,比如8张图片插入8张数字imageview
。我尝试了以下代码。如果我将第一个图像插入第一个 imageview
并且结果很好,不知何故存在一些问题。但是如果我继续将第二张图片插入第二张 imageview
。第一个 imageview
将更改为与第二个 imageview
相同的图像。它一直在破解我的头,我的代码有什么问题?
@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
这里是方法 openImg
和 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
正如我所见,下面的代码是问题所在
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 ?
它删除了更多您正在执行的样板代码。而且它会更像是一个动态数据。
如果我想插入图片到imageview
,比如8张图片插入8张数字imageview
。我尝试了以下代码。如果我将第一个图像插入第一个 imageview
并且结果很好,不知何故存在一些问题。但是如果我继续将第二张图片插入第二张 imageview
。第一个 imageview
将更改为与第二个 imageview
相同的图像。它一直在破解我的头,我的代码有什么问题?
@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
这里是方法 openImg
和 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
正如我所见,下面的代码是问题所在
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 ?
它删除了更多您正在执行的样板代码。而且它会更像是一个动态数据。