这是一个转储问题,抱歉我一直没有使用java。
我有一个setter / getter类ListMainItem
我想设置并从中获取一个String,但我得到null值。
ListMainItem object = new ListMainItem();
String[] images = {"A","B","C"};
final ArrayList<ListMainItem> list = new ArrayList<ListMainItem>();
for (int i = 0; i < images.length; ++i) {
object.setImages(images[i]);
list.add(object);
String test = object.getImages();
System.out.print(test);
值测试始终为null我在这里做错了
Listmain类
public class ListMainItem implements Parcelable{
String id;
//String name;
public String url;
String images;
ListMainItem (Parcel in){
this.id = in.readString();
// this.name = in.readString();
this.url = in.readString();
this.images= in.readString();
}
public ListMainItem() {
// this.id = id;
// this.url = url;
this.images = images;
}
@Override
public int describeContents() {
return 0;
}
public void setUrl(String url) {
this.url = url;
}
public String getUrl() {
return url;
}
public void setId(String id) {
this.id = id;
}
public String getId() {
return id;
}
public void setImages(String Image)
{
this.images=images;
}
public String getImages()
{
return images;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(this.id);
// dest.writeString(this.name);
dest.writeString(this.url);
dest.writeString(this.images);
}
public static final Parcelable.Creator<ListMainItem> CREATOR = new Parcelable.Creator<ListMainItem>() {
public ListMainItem createFromParcel(Parcel in) {
return new ListMainItem(in);
}
public ListMainItem[] newArray(int size) {
return new ListMainItem[size];
}
};
}
答案 0 :(得分:2)
public void setImages(String Image) {
this.images = images;
}
此上下文中的 images
等于this.images
- 您将此设置为自身,并忽略String Image
输入参数。
如果你想要这个,请做`this.images = Image&#34;。坚持惯例并放弃大写字母也是一个好主意:
public void setImages(String images) {
this.images = images;
}
答案 1 :(得分:1)
你的二传手是错的
public void setImages(String Image)
{
this.images=images;
}
param是Image,因此image引用了全局变量(错误的case break参考)。
答案 2 :(得分:1)
这是捕捉
public void setImages(String Image)
{
this.images=images;
}
您需要将setImages(String Image)
更改为setImages(String images)
另外,我想知道你的代码是否真的编译正确,因为下面的代码行似乎没有效果。您是按字符数组初始化String数组吗?
String images[] = {'A','B','C'};
建议纠正:
以下代码行是分配给自己的示例。你应该对作业进行评论。
public ListMainItem() {
// this.id = id;
// this.url = url;
this.images = images;
}
每次迭代后,您都可以将新对象添加到列表中,而不是在此处执行,而是更新相同的对象并添加其引用。这也意味着所有元素都具有相同的对象引用,并将返回相同的值。因此,您应该在每次迭代中创建一个新对象。
for (int i = 0; i < images.length; ++i) {
object = new ListMainItem();
object.setImages(images[i]);
list.add(object);
答案 3 :(得分:0)
我认为你已经初步化了&#39; String图像&#39;以错误的方式。尝试使用&#34; &#34;而不是&#39; &#39;在其中写入字符串值。 由于初始化期间的默认值,您将获得空值