从任何活动迭代全局列表



>我有一个活动中的对象列表,其中同一活动中的按钮在每次单击时都会向其添加一个对象我希望能够访问该列表并从任何其他活动迭代它我把它公开了,但它给了我一个错误!

package com.fawzyx.movie_rental_store;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MovieReg_activity extends Activity {
    public List<movie> movies = new ArrayList<movie>();
    String movName ;
    int dvdNo ;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mov_reg_layout);
        EditText etmovie_name = (EditText)findViewById(R.id.etmovname);
        EditText etdvd_no = (EditText)findViewById(R.id.etdvds);
        Button btMovie_submit = (Button)findViewById(R.id.btmovsubmit);
        movName= etmovie_name.getText().toString();
        dvdNo = Integer.parseInt(etdvd_no.getText().toString()); // to string then to int :)
        btMovie_submit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                movies.add(new movie(movName , dvdNo) );
                Toast.makeText(MovieReg_activity.this, "Movie Added", Toast.LENGTH_LONG).show();    

            }
        });
    }
}

有没有办法从任何其他活动访问和迭代列表电影?

您可以使用静态方式访问此列表:

public static List<movie> movies = new ArrayList<movie>();

然后从其他活动:

int size = MovieReg_activity.movies.size(); // exp: check the size
for(movie m : MovieReg_activity.movies){
    // do something with m
}

如果要创建全局列表,请创建一个静态变量或将其放入应用程序类中并通过上下文访问它。

搜索有关创建自定义应用程序类的信息。

也许使用包含电影列表的单例类。

然后,您将能够在任何地方访问它。

http://androidresearch.wordpress.com/2012/03/22/defining-global-variables-in-android/

最新更新