[英]add new item in arraylist java android
在我的应用程序中,有一个SpacePhoto
类,用于保存图像数据,目前在该类中有arraylist,其中包含一些虚拟数据,现在在主要活动中,我正在从数据库中获取真实数据,并希望将此数据添加到此类中的arraylist中,但是错误
Cannot resolve method 'add(com.example.user.instamoney.SpavePhoto)'
我正在使用这种方法从我的主要活动中添加新项目
mSpacePhotos.add(add(new SpacePhoto(imgurl, title));
这是我的SpacePhoto课
package com.example.user.instamoney;
import android.os.Parcel;
import android.os.Parcelable;
import java.util.ArrayList;
/**
* Created by Chike on 2/11/2017.
*/
public class SpacePhoto implements Parcelable {
private String mUrl;
private String mTitle;
public SpacePhoto(String url, String title) {
mUrl = url;
mTitle = title;
}
protected SpacePhoto(Parcel in) {
mUrl = in.readString();
mTitle = in.readString();
}
public static final Creator<SpacePhoto> CREATOR = new Creator<SpacePhoto>() {
@Override
public SpacePhoto createFromParcel(Parcel in) {
return new SpacePhoto(in);
}
@Override
public SpacePhoto[] newArray(int size) {
return new SpacePhoto[size];
}
};
public String getUrl() {
return mUrl;
}
public void setUrl(String url) {
mUrl = url;
}
public String getTitle() {
return mTitle;
}
public void setTitle(String title) {
mTitle = title;
}
public static ArrayList<SpacePhoto> getSpacePhotos() {
return new ArrayList<SpacePhoto>() {{
add(new SpacePhoto("https://static.getjar.com/ss/b0/867888_2.jpg", "a"));
add(new SpacePhoto("http://i52.photobucket.com/albums/g28/finalfantesy/mario-1-1ext.jpg", "b"));
add(new SpacePhoto("http://longwallpapers.com/Desktop-Wallpaper/butterfly-wallpaper-background-For-Desktop-Wallpaper.jpg", "c"));
add(new SpacePhoto("http://www.intrawallpaper.com/static/images/wallpaper_51.jpg", "d"));
add(new SpacePhoto("https://i.pinimg.com/736x/80/91/f9/8091f9dceb2ea55fa7b57bb7295e1824--hd-iphone--wallpapers-backgrounds-wallpapers.jpg", "e"));
add(new SpacePhoto("http://www.intrawallpaper.com/static/images/PC-Wallpapers-Nature-Wallpaper-Laptops-Wallpapers.jpg", "f"));
add(new SpacePhoto("https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcS8rqYSiC_nmbV-04o5XlS885E9t3HdlkZkm9d9bIkDpTASQv3osg", "g"));
add(new SpacePhoto("https://static.pexels.com/photos/490411/pexels-photo-490411.jpeg", "h"));
add(new SpacePhoto("https://images.alphacoders.com/846/thumb-1920-84631.jpg", "i"));
add(new SpacePhoto("http://www.printawallpaper.com/upload/vistas_dd.jpg", "j"));
add(new SpacePhoto("https://pre00.deviantart.net/afa0/th/pre/f/2011/074/7/3/new_york_city_wallpaper_by_angelmaker666-d3boylj.jpg", "k"));
add(new SpacePhoto("http://www.wallpapers13.com/wp-content/uploads/2016/06/New-York-summer-photo-HD-Wallpaper-915x515.jpg", "l"));
}};
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel parcel, int i) {
parcel.writeString(mUrl);
parcel.writeString(mTitle);
}
}
我是Android开发的新手,我曾尝试在Internet上进行搜索以修复它,但找不到解决方法,我不知道我在哪里做错了。
像这样编辑您的SpacePhoto类:
public class SpacePhoto implements Parcelable {
private String mUrl;
private String mTitle;
public SpacePhoto(String url, String title) {
mUrl = url;
mTitle = title;
}
protected SpacePhoto(Parcel in) {
mUrl = in.readString();
mTitle = in.readString();
}
public static final Creator<SpacePhoto> CREATOR = new Creator<SpacePhoto>() {
@Override
public SpacePhoto createFromParcel(Parcel in) {
return new SpacePhoto(in);
}
@Override
public SpacePhoto[] newArray(int size) {
return new SpacePhoto[size];
}
};
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel parcel, int i) {
parcel.writeString(mUrl);
parcel.writeString(mTitle);
}
}
并为SpacePhoto列表创建新类:
public class SpaceList {
private ArrayList<SpacePhoto> spaceList = new ArrayList<>();
public void addToList(SpacePhoto spacePhoto) {
spaceList.add(spacePhoto);
}
public ArrayList<SpacePhoto> getSpaceList() {
return spaceList;
}
}
并在MainActivity上使用它:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SpaceList spaceList = new SpaceList();
// add new Space Photo to list
spaceList.addToList(new SpacePhoto("URL", "TITLE"));
spaceList.addToList(new SpacePhoto("URL", "TITLE"));
spaceList.addToList(new SpacePhoto("URL", "TITLE"));
spaceList.addToList(new SpacePhoto("URL", "TITLE"));
spaceList.addToList(new SpacePhoto("URL", "TITLE"));
spaceList.addToList(new SpacePhoto("URL", "TITLE"));
// get list of Space Photo
ArrayList<SpacePhoto> arrayList = spaceList.getSpaceList();
for (int i = 0; i < arrayList.size(); i++) {
// get spacePhoto from arrayList
SpacePhoto spacePhoto = arrayList.get(i);
}
}
}
出现以下错误:
Cannot resolve method 'add(com.example.user.instamoney.SpavePhoto)'
来自:
mSpacePhotos.add(add(new SpacePhoto(imgurl, title));
这是因为您的类没有名为add()
的方法。 您需要将其更改为:
mSpacePhotos.add(new SpacePhoto(imgurl, title);
然后出现以下错误:
Exception java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.util.ArrayList.add(java.lang.Object)' on a null object reference
这是因为您尚未创建对象。
要创建对象,您要使用new
,例如new
:
mSpacePhotos = new ArrayList<>();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.