Android-编辑来自其他活动的ListAdapter数据

Android-编辑来自其他活动的ListAdapter数据,android,listactivity,listadapter,Android,Listactivity,Listadapter,我有一个简单的应用程序,它有3个活动。第三个活动是ListActivity,它列出电影标题及其各自的总值和年份,选择任何电影都将显示第一个活动中的值。第二个活动是用户可以通过填充EditText字段将电影添加到ListActivity,这就是我遇到的问题 到目前为止,我看到的示例包括使用以下代码行: SampleCustomAdapter adapter = new SampleCustomAdapter(results); setListAdapter(adap

我有一个简单的应用程序,它有3个活动。第三个活动是ListActivity,它列出电影标题及其各自的总值和年份,选择任何电影都将显示第一个活动中的值。第二个活动是用户可以通过填充EditText字段将电影添加到ListActivity,这就是我遇到的问题

到目前为止,我看到的示例包括使用以下代码行:

        SampleCustomAdapter adapter = new SampleCustomAdapter(results);
        setListAdapter(adapter);

        adapter.notifyDataSetChanged();
但是,这行代码不适用于我的案例,因为第二个活动中的类扩展了activity而不是ListActivity

public static String title, gross, year;
public static boolean newMovieAdded=false;
到目前为止,这是我尝试将新条目添加到列表时的代码

//if all edit text fields have values and are valid inputs  
if( titleFlag == 1 && grossFlag == 1 && yearFlag == 1){
    //fix stuff here
    //TODO ADD THE NEW MOVIE TO THE ARRAY IN STRINGS.XML

    ArrayList<MyMovies> movieList = new ArrayList<MyMovies>();
    MyMovies newMovie = new MyMovies();

    newMovie.setMovie(title);
    newMovie.setGross(gross);
    newMovie.setYear(year);
    movieList.add(newMovie);


    //go back to the main page after adding
    Intent intent = new Intent(this, com.Android.Lab7.Lab7_084106.class);
    startActivity(intent);
    finish();

}
//如果所有编辑文本字段都有值并且是有效输入
如果(titleFlag==1&&grossFlag==1&&yearFlag==1){
//在这里修好东西
//TODO将新电影添加到STRINGS.XML中的数组
ArrayList movieList=新的ArrayList();
MyMovies newMovie=新建MyMovies();
newMovie.setMovie(标题);
newMovie.setGross(gross);
newMovie.setYear(年);
movieList.add(newMovie);
//添加后返回主页面
Intent Intent=新Intent(这个,com.Android.Lab7.lab7084106.class);
星触觉(意向);
完成();
}
我还尝试添加适配器。notifyDataSetChanged();在生成列表后的第三个活动中,但无效。哦,第三个activitys'onCreate看起来像这样:

@Override
public void onCreate(Bundle savedInstanceState) {

    //create stuff
    super.onCreate(savedInstanceState);

    ArrayList<MyMovies> movieList = new ArrayList<MyMovies>();

    String[] movieArray = getResources().getStringArray(R.array.movieArray);
    String[] grossArray = getResources().getStringArray(R.array.worldwideGross);
    String[] yearArray = getResources().getStringArray(R.array.yearArray);

        ArrayList<MyMovies> results = new ArrayList<MyMovies>();
        // make sure the arrays have the same length
        for (int i = 0; i < movieArray.length; i++) {
            MyMovies sr = new MyMovies();
            sr.setMovie(movieArray[i]);
            sr.setGross(grossArray[i]);
            sr.setYear(yearArray[i]);
            results.add(sr);

       }


        SampleCustomAdapter adapter = new SampleCustomAdapter(results);
        setListAdapter(adapter);



    ListView lv = getListView();
    lv.setTextFilterEnabled(true);
    adapter.notifyDataSetChanged();

    //set stuff such that Page2 sends back a result to page 1
    lv.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            sendResult(position);   
        }
    });


}
@覆盖
创建时的公共void(Bundle savedInstanceState){
//创造东西
super.onCreate(savedInstanceState);
ArrayList movieList=新的ArrayList();
String[]movieArray=getResources().getStringArray(R.array.movieArray);
字符串[]grossArray=getResources().getStringArray(R.array.worldwideGross);
字符串[]yearray=getResources().getStringArray(R.array.yearray);
ArrayList结果=新建ArrayList();
//确保数组具有相同的长度
对于(int i=0;i
我使用strings资源来存储标题数组、gross和year,因为它们有很多,我硬编码它们是不实际的


因此,基本上,我被困在如何从第二个活动更新第三个活动中的列表上

在第三个活动中声明这一点

public static String title, gross, year;
public static boolean newMovieAdded=false;
然后,当您在第二个活动中时,请执行以下操作

thirdActivity.title=MyEditText1.getText().toString()

thirdActivity.gross=MyEditText2.getText().toString()

thirdActivity.year=MyEditText3.getText().toString()

如果(!year.等于(“”)

newMovieAdded=true

就这些。当您进入第三个活动时,只需编写代码

     ArrayList<MyMovies> movieList = new ArrayList<MyMovies>();

    if(newMovieAdded){
        MyMovies newMovie = new MyMovies();
        newMovie.setMovie(title);
        newMovie.setGross(gross);
        newMovie.setYear(year);
        movieList.add(newMovie);
        newMovieAdded = false;
}
ArrayList movieList=new ArrayList();
如果(新增电影){
MyMovies newMovie=新建MyMovies();
newMovie.setMovie(标题);
newMovie.setGross(gross);
newMovie.setYear(年);
movieList.add(newMovie);
newMovieAdded=false;
}

谢谢您的帮助。我有问题,虽然它进入了如果声明,但新电影没有显示。我还添加了适配器。notifyDataSetChanged();在if区的最后一行。好的,找到我错的地方了。现在它给出了一个IndexOutOfOBoundsException,因为strings.xml文件中的初始列表只有50个条目,并且不知何故它无法显示我添加的新条目。我更喜欢在java.String[]movieString=new String[movieList.Length]中创建一个动态字符串数组