我有一个简单的应用程序,它有 3 个活动。第三个活动是 ListActivity,它列出了电影标题及其各自的总票房和年份,选择任何电影都会显示第一个活动中的值。第二个活动是用户可以通过填写 EditText 字段将电影添加到 ListActivity 的地方,这就是我遇到问题的地方。
到目前为止,我看到的示例涉及使用这行代码:
SampleCustomAdapter adapter = new SampleCustomAdapter(results);
setListAdapter(adapter);
adapter.notifyDataSetChanged();
但是,这行代码不适用于我的情况,因为第二个活动中的类扩展了 Activity 而不是 ListActivity。
到目前为止,这是我尝试将新条目添加到列表时的代码。
//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();
}
我还尝试添加 adapter.notifyDataSetChanged(); 在生成列表后的第三个活动中但无济于事。哦,第三个活动的 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);
}
});
}
我使用字符串资源来存储标题、总量和年份的数组,因为它们很多,而且我对它们进行硬编码是不切实际的。
所以基本上我坚持如何从第二个活动更新第三个活动中的列表。