给动态创建的imageView一个id

时间:2013-12-22 17:19:06

标签: android

我在gridView适配器类的编码中创建了一个imageView:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    // Try to reuse the views
    ImageView view = (ImageView) convertView;
    boolean checked = (mCheckBox==null)?false:(((CheckBox)  mCheckBox).isChecked());
    // if convert view is null then create a new instance else reuse it
    if (view == null) {
        view = new ImageView(Context);
        Log.d("GridViewAdapter", "new imageView added");
    }

有没有办法可以为view分配一个id,以便我可以在另一个类中使用该ID来设置图像?

我要像这样设置图像:

/// Let's save to a .jpg file ...
File file = new File(mContext.getFilesDir().getAbsolutePath() + "/test2.jpg");
FileOutputStream out;
try {
    file.createNewFile();
    out = new FileOutputStream(file);
    appBmp.compress(Bitmap.CompressFormat.JPEG, 80, out);
    out.close();

    // Load back the image file to confirms it works        
    Bitmap bitmap = BitmapFactory.decodeFile( file.getAbsolutePath() );
    ImageView imageView1 = (ImageView)v.findViewById(R.id.layout1);
    imageView1.setImageBitmap( bitmap );            
}

这样我就可以在findViewById中设置该ID,并将图像设置为该imageView。

我已经尝试设置具有不同id值的ids.xml文件,然后通过执行以下操作将其分配给imageView:

view.setId(R.id.layout1);

但这不起作用。

1 个答案:

答案 0 :(得分:0)

您可以使用View.setId()设置任何整数,您不需要在xml中定义它们(这会使您的方法静态而不是动态)。这可能不起作用,因为你需要eclipse / android studio / adb来为xml id创建引用文件。

您只需检查是否指定了唯一ID。请参阅此帖以解决此问题: Programmatic Views how to set unique id's?。请注意,根据定义,Id不需要是唯一的,但如果它们不是,则不会通过id将它们取回。也许setTag可能更符合您的需求吗?