将对象(String, String, int, int)添加到 ArrayList



我得到了这两个类。下面的那个应该得到一个带有电影的数组列表......

import java.util.ArrayList ;
import android.app.Activity ;
import android.os.Bundle ;
public class UIDActivity extends Activity {
    private static ArrayList<Movie> movieList;
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
    public static void main(String String, int 
    int args[]

        ) {     
movieList = new ArrayList<Movie>();
        movie1 = new Movie("Fight Club", "David Fincher", "1999", "3");
        movieList.add(movie1);
    }
    public String getTitle() {
        return title;
    }
    public String getDirector() {
        return director;
    }
    public int getYear() {
        return year;
    }
    public int getRating() {
        return rating;
    }
}

这是 Movie 类,我在其中讲述电影的属性是什么

import java.io.Serializable ;
@SuppressWarnings("serial")
public class Movie implements Serializable {
    public String title;
    public String director;
    public int year;
    public int rating;
    public Movie(String deTitle, String deDirector, int hetYear, int deRating) {
        title = deTitle;
        director = deDirector;
        year = hetYear;
        rating = deRating;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public void setDirector(String director) {
        this.director = director;
    }
    public void setYear(int year) {
        this.year = year;
    }
    public void setRating(int rating) {
        this.rating = rating;
    }
}

出于某种原因,我不知道我一直忘记了什么简单的事情?!?!Eclipse 想将我的公共电影更改为四倍字符串...那里没有错误,但休息也不起作用。

您的电影构造函数需要两个字符串对象和两个 int -

public Movie(String deTitle, String deDirector, int hetYear, int deRating) 

但是您正在传递四个字符串对象 -

 movie1 = new Movie("Fight Club", "David Fincher", "1999", "3");

为什么尝试将四个字符串值传递给 Movie 构造函数,而不是构造函数预期的两个字符串和两个 int?通过构造函数的方式,您应该创建电影对象,如下所示 -

 movie1 = new Movie("Fight Club", "David Fincher", 1999, 3);

你只需要在你的 Movie 类中拥有 setter/getter,此外,还要确保类变量被声明为私有的,并且只能通过适当的 getter 访问。

公共类 Movie 实现可序列化 {

private String title;
private String director;
private int year;
private int rating;
public Movie(String deTitle, String deDirector, int hetYear, int deRating) {
    title = deTitle;
    director = deDirector;
    year = hetYear;
    rating = deRating;
}
public void setDirector(String director) {
    this.director = director;
}
public String getDirector() {
    return director;
}
...

}

此外,我会使用 List 接口定义您的列表,并将实例化定义为 ArrayList。

我所知,如果你创建了一个静态变量,你必须在这一点上初始化它。

试试这个:

private static ArrayList<Movie> movieList = new ArrayList<Movie>();

顺便说一句,UIDActivity 的获取者不应该移动到 Movie 类或包含您想要的电影的索引吗?

问题是您尝试使用一个接受两个Strings和两个ints的构造函数,但传递构造函数 4 个字符串。

电影类中构造函数的方法签名为

public Movie(String deTitle, String deDirector, int hetYear, int deRating)

您尝试调用构造函数的方式不正确。

这:

movie1 = new Movie("Fight Club", "David Fincher", "1999", "3");

应该是:

movie1 = new Movie("Fight Club", "David Fincher", 1999, 3);

最新更新