예제 #1
0
  // On open application create listview, load movie data from file and
  // show it.
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // Loading movie list from the file, if failed - reset the array list.
    if (FileManager.loadFile(this, FILE_NAME, mMovies) == FileManager.RESULT_ERROR) {
      mMovies = new ArrayList<>();
    }

    mListViewMovies = (ListView) findViewById(R.id.listViewMainMovies);
    mEmptyMainMovieList = (TextView) findViewById(R.id.emptyMainMovieList);
    mTextViewMainTopic = (TextView) findViewById(R.id.textViewMainTopic);

    // ListView adapter initialising.
    mMainListAdapter = new MainListAdapter(this, mMovies);
    mListViewMovies.setAdapter(mMainListAdapter);

    // On Item click transferring to Editor Screen.
    mListViewMovies.setOnItemClickListener(
        new AdapterView.OnItemClickListener() {
          @Override
          public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            transferToEditorActivity(position);
          }
        });

    // On Item Long click, open menu for edit and delete options.
    mListViewMovies.setOnItemLongClickListener(
        new AdapterView.OnItemLongClickListener() {
          @Override
          public boolean onItemLongClick(
              AdapterView<?> parent, View view, final int position, long id) {
            PopupMenu popupMenu = new PopupMenu(MainActivity.this, view);
            popupMenu.setOnMenuItemClickListener(
                new PopupMenu.OnMenuItemClickListener() {
                  @Override
                  public boolean onMenuItemClick(MenuItem item) {
                    switch (item.getItemId()) {
                        // Delete the movie from list and file.
                      case R.id.action_delete:
                        // Open confirmation dialog.
                        new AlertDialog.Builder(MainActivity.this)
                            .setTitle(R.string.dialog_delete_movie_title)
                            .setMessage(R.string.dialog_delete_all_message)
                            .setPositiveButton(
                                R.string.dialog_delete_movie_positive_button_label,
                                new DialogInterface.OnClickListener() {
                                  @Override
                                  public void onClick(DialogInterface dialog, int which) {
                                    mMovies.remove(position);
                                    FileManager.saveFile(MainActivity.this, FILE_NAME, mMovies);
                                    mMainListAdapter.notifyDataSetChanged();
                                  }
                                })
                            .setNegativeButton(R.string.button_cancel_label, null)
                            .create()
                            .show();

                        break;

                        // Go to Editor activity.
                      case R.id.action_edit:
                        transferToEditorActivity(position);
                        break;
                    }

                    return true;
                  }
                });
            popupMenu.inflate(R.menu.menu_item);
            popupMenu.show();

            return true;
          }
        });

    mListViewMovies.setEmptyView(mEmptyMainMovieList);
  }