我有一个由电影对象填充的arraylisy
每次点击某个按钮时都会创建一个“电影”对象 并根据用户提供的数据给出其属性
问题在于每次创建对象时,所有对象的名称都会更改为最后创建的对象的名称 我的代码有什么问题
public class MovieReg_activity extends Activity {
public static List<movie> movies = new ArrayList<movie>();
String movName ;
int dvdNo ;
int x=0 ;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.mov_reg_layout);
EditText etdvd_no = (EditText)findViewById(R.id.etdvds);
Button btMovie_submit = (Button)findViewById(R.id.btmovsubmit);
// dvdNo = Integer.parseInt(etdvd_no.getText().toString()); // to string then to int :)
btMovie_submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
EditText etmovie_name = (EditText)findViewById(R.id.etmovname);
movName= etmovie_name.getText().toString();
movies.add(x,new movie(movName , dvdNo) );
String name3= movie.getName() ;
x++ ;
int size =movies.size() ;
Toast.makeText(MovieReg_activity.this, "no of movies added :"+size , Toast.LENGTH_SHORT).show();
}
});
}
}
课堂电影
public class movie {
public static String name45;
int dvd_no ;
public movie( String name1 , int dvd_no1)
{
this.name45=name1 ;
this.dvd_no = dvd_no1 ;
Log.d("DEBUG", "constructor name1 " + name1);
Log.d("DEBUG", "constructor name45 " + name45);
}
public static String getName()
{
return name45 ;
}
}
答案 0 :(得分:0)
在影片类中,name45被设置为静态变量。这意味着所有电影对象只有该变量的一个副本。使getName()不是静态的,并使name45不是静态的。这应该可以解决你的问题。
@Override
public void onClick(View v) {
EditText etmovie_name = (EditText)findViewById(R.id.etmovname);
movName= etmovie_name.getText().toString();
movie movieToAdd = new movie(movName, dvdNo);
movies.add(x,movieToAdd );
String name3= movieToAdd.getName() ;
x++ ;
int size =movies.size() ;
Toast.makeText(MovieReg_activity.this, "no of movies added :"+size , Toast.LENGTH_SHORT).show();
}