0

3つのアクティビティを持つ単純なアプリケーションがあります。3番目のアクティビティはListActivityで、映画のタイトルとそれぞれのグロスと年を一覧表示します。映画を選択すると、最初のアクティビティの値が表示されます。2番目のアクティビティは、ユーザーがEditTextフィールドに入力することで、ListActivityに映画を追加できる場所です。これは、私が問題を抱えている場所です。

これまでのところ、私が見ている例では、次のコード行を使用しています。

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

        adapter.notifyDataSetChanged();

ただし、2番目のアクティビティのクラスは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();を追加してみました。リストを生成した後の3番目のアクティビティでは、役に立ちません。ああ、3番目のアクティビティの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);   
        }
    });


}

文字列リソースを使用して、タイトル、グロス、および年の配列を格納しました。これらは多数あり、ハードコーディングするのは実用的ではないためです。

したがって、基本的に、2番目のアクティビティから3番目のアクティビティのリストを更新する方法に固執しています。

4

1 に答える 1

2

3番目のアクティビティでこれを宣言します。

public static String title, gross, year;
public static boolean newMovieAdded=false;

次に、2番目のアクティビティにいるときに、次の手順を実行します

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

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

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

if(!year.equals( ""))

newMovieAdded = true;

それで全部です。3番目のアクティビティに進むときは、コードを記述してください

     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;
}
于 2012-08-19T00:49:46.367 に答える