繁体   English   中英

在arraylist java android中添加新项目

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM