自动创建的对象的属性

时间:2014-02-19 02:24:22

标签: android oop object arraylist

我有一个由电影对象填充的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 ;
    }

}

1 个答案:

答案 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();    

}