我有一个List<Presenter> presenterList;
与
public class Presenter(){
String name;
String imageRef; // Filename to be downloaded
Bitmap image;
(etc...)
}
我正在使用 AsyncTask,图像下载后,我希望浏览列表并将图像值设置为新下载的图像。 到目前为止我已经
Presenter pres = PresenterList.get(Position);
pres.Image = new (Bitmap) downloadedImageFromImageRef;
但是我担心这与列表中演示者的图像值无关。
我如何引用,甚至分配给列表中的特定演示者属性?
通过使用 C(很多年前),我相信像指向要在其中分配 .Image 的值的指针之类的东西
提前谢谢您
最佳答案
好吧,如果您有 C 经验,那么关于 Java 需要了解的是,它不使用指针,但它使用引用。因此,如果我正确理解您的问题,那么您已经在其他地方使用 Presenter
实例的 Image
属性,然后您想稍后填写它。在这种情况下,分配 pres.Image = new (Bitmap) DownloadedImageFromImageRef;
不起作用,因为其他对象正在查看不同的 Bitmap
对象引用。
您可能需要做的是使用观察者模式——这取决于问题的细节。这是一个例子:
在代码中的某个位置,我有一个类 Foo
,它想要使用 Presenter
实例中的 Image
属性。但是,由于该属性要稍后才设置,因此此类希望在准备就绪时收到通知(它是观察者)。
public class Presenter {
String Name;
String ImageRef; // Filename to be downloaded
private Bitmap Image;
private PresenterImageObserver observer;
public void setImageObeserver(PresenterImageObserver pio) {
this.observer = pio;
}
public void setImage(Bitmap b) {
this.Image = b;
this.observer.imageLoaded(b);
}
}
public interface PresenterImageObserver {
public void imageLoaded(Bitmap b);
}
public class Foo implements PresenterImageObserver {
//Foo's constructor. It wants the image from presenter p, when it is ready
public Foo(Presenter p) {
p.setImageObserver(this);
}
public void imageLoaded(Bitmap b) {
//b contains the loaded image and this Foo instance can use it now!
}
}
您需要使用 pres.setImage(new (Bitmap) downloadImageFromImageRef);
设置图像。
关于java - 如何: Make addition to class property within list,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24085675/