我试图通过使用适配器 ListView 将可绘制对象中的图像存储到整数数组中来在单击图像时隐藏图像,但我无法获取它。这是我正在使用的代码:
当我单击图像时,它应该变得不可见。我将图像存储在 int 数组中并应用 setVisibilty看不见,但它不起作用。我希望图像显示在屏幕中央,而单击的图像应该变得不可见.我正在尝试将图像存储在整数数组中并将其设置在适配器列表中。我正在调用此函数
imageIDs[position].setVisible(false);
Integer[] imageIDs = {
R.drawable.c2,
R.drawable.c3,
R.drawable.c4,
R.drawable.c5,
R.drawable.c6,
R.drawable.c7,
R.drawable.c8
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Note that Gallery view is deprecated in Android 4.1---
Gallery gallery = (Gallery) findViewById(R.id.gallery1);
//Adapter list
gallery.setAdapter(new ImageAdapter(this));
gallery.setOnItemClickListener(new OnItemClickListener() {
//onclick event
public void onItemClick(AdapterView<?> parent, View v, int position,long id)
{//displaying image clicked i am trying to invisible this pic when click
Toast.makeText(getBaseContext(),"pic" + (position + 1) + " selected",//dispplpaying msg
Toast.LENGTH_SHORT).show();
//imageIDs[position].setVisible(false);
// display the images selected
ImageView imageView = (ImageView) findViewById(R.id.image1);
imageView.setImageResource(imageIDs[position]);
//setting image on screen from using xml
}
});
}
public class ImageAdapter extends BaseAdapter {
private Context context;
private int itemBackground;
public ImageAdapter(Context c)
{
context = c;
// sets a grey background; wraps around the images
TypedArray a =obtainStyledAttributes(R.styleable.MyGallery);
itemBackground = a.getResourceId(R.styleable.MyGallery_android_galleryItemBackground, 0);
a.recycle();
}
// returns the number of images
public int getCount() {
return imageIDs.length;
}
// returns the ID of an item
public Object getItem(int position) {
return position;
}
// returns the ID of an item
public long getItemId(int position) {
return position;
}
// returns an ImageView view
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView = new ImageView(context);
//imageIDs[position].setVisible(false);
//i am trying it here but its not working
imageView.setImageResource(imageIDs[position]);
imageView.setLayoutParams(new Gallery.LayoutParams(100, 100));
imageView.setBackgroundResource(itemBackground);
return imageView;
}
}
}
最佳答案
我假设您正在尝试使用此代码:
//imageIDs[position].setVisible(false);
如果是这样,那么您正在做的是在 Integer 上调用 setVisible,而 Integer 没有该方法。您需要做的是获取对正在显示图像的 ImageView 的引用,然后对其调用 setVisibility(View.INVISIBLE) 或 setVisibility(View.GONE) 。
此外,您似乎正在尝试将图像设置为不可见,但随后您将相同的资源放回到 ImageView 中,所以我不确定您要在那里做什么。
关于java - 如何通过 onclick 在 android 中的 ImageView 上对适配器 ListView 中的整数数组使用 setVisibility,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30016154/