簡體   English   中英

Android - 從另一個活動編輯ListAdapter數據

[英]Android - Editing ListAdapter Data from another activity

我有一個簡單的應用程序,有3個活動。 第三個活動是ListActivity,列出電影標題及其各自的毛重和年份,選擇任何電影將顯示第一個活動中的值。 第二個活動是用戶可以通過填充EditText字段將電影添加到ListActivity,這是我遇到問題的地方。

到目前為止,我看到的示例涉及使用以下代碼行:

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

        adapter.notifyDataSetChanged();

但是,這行代碼對我的情況不起作用,因為第二個活動中的類擴展了Activity和NOT ListActivity。

到目前為止,這是我嘗試將新條目添加到List時的代碼。

//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);   
        }
    });


}

我使用字符串資源來存儲標題,粗體和年份的數組,因為它們有很多,而且我對它們進行硬編碼是不切實際的。

所以基本上我一直堅持如何在第二個活動中更新第三個活動中的List。

在第三個Activity中聲明這個。

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.equals( “”))

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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM