我得到了这两个类。下面的那个应该得到一个带有电影的数组列表......
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);