Android Open Source - ListView-Swipe-to-Delete Main List Activity






From Project

Back to project page ListView-Swipe-to-Delete.

License

The source code is released under:

Apache License

If you think the Android project ListView-Swipe-to-Delete listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.skd.swipetodelete.list;
//ww w .j a v  a2s.co  m
import java.util.ArrayList;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.widget.EditText;
import android.widget.ListView;

import com.skd.swipetodelete.Item;
import com.skd.swipetodelete.R;
import com.skd.swipetodelete.menu.MenuItemDesc;

/*
 * Main activity class for list view animations demo.
 * The following are established:
 * - list view;
 * - list adapter inherited from ItemBaseListAdapter;
 * - list handler inherited from ItemBaseListHandler which overrides a callback method when menu item is triggered;
 * - list manager which is responsible for swipe and shake detection (the 3rd parameter in constructor enables shake detection).
 * Mark as removed list view items are placed at the bottom of the list view.
 * Two sample menu actions are implemented: edit list view item and share. 
 */

public class MainListActivity extends Activity {
  private ListView list;
  private ItemListAdapter listAdapter;
  private ItemListHandler listHandler;
  private ItemListManager listManager;
  
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_list);

    list = (ListView) findViewById(android.R.id.list);
    
    listHandler = new ItemListHandler(list);
    
    ArrayList<MenuItemDesc> menuItems = fillMenu();
    
    listAdapter = new ItemListAdapter(R.layout.item, menuItems, listHandler);
    fillAdapter();
    list.setAdapter(listAdapter);

    listManager = new ItemListManager(this, listHandler, true);
  }

  @Override
  protected void onPause() {
    super.onPause();
    if (listManager != null) {
      listManager.pause();
    }
  }

  @Override
  protected void onResume() {
    super.onResume();
    if (listManager != null) {
      listManager.resume();
    }
  }
  
  @Override
  protected void onDestroy() {
    if (listManager != null) {
      listManager.destroy();
    }
    super.onDestroy();
  }
  
  private void fillAdapter() {
    for (int i=0; i<8; i++) {
      listAdapter.add(new Item((i + 1), "Item " + (i + 1)));
    }
  }

  private ArrayList<MenuItemDesc> fillMenu() {
    ArrayList<MenuItemDesc> items = new ArrayList<MenuItemDesc>();
    
    MenuItemDesc itemEdit = new MenuItemDesc();
    itemEdit.setAction(getString(R.string.editAction));
    itemEdit.setIcon(R.drawable.btn_edit);
    items.add(itemEdit);
    
    MenuItemDesc itemShare = new MenuItemDesc();
    itemShare.setAction(getString(R.string.shareAction));
    itemShare.setIcon(R.drawable.btn_share);
    items.add(itemShare);
  
    return items;
  }
  
  public class ItemListHandler extends ItemBaseListHandler {

    public ItemListHandler(ListView list) {
      super(list);
    }

    @Override
    public void onItemMenuAction(int position, String action) {
      if (action.equals(getString(R.string.editAction))) {
        showEditItemConfirmDialog(position);
      }
      else if (action.equals(getString(R.string.shareAction))) {
        showShareItemDialog(position);
      }
    }
  }
  
  private void showEditItemConfirmDialog(final int position) {
    final EditText itemText = new EditText(this); 
    
    AlertDialog.Builder builder = new AlertDialog.Builder(MainListActivity.this);
    builder.setMessage("Edit item?")
        .setCancelable(false)
        .setView(itemText)
        .setPositiveButton("Save changes",
            new DialogInterface.OnClickListener() {
              public void onClick(DialogInterface dialog, int id) {
                listAdapter.edit(position, itemText.getText().toString());
              }
            })
        .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
          public void onClick(DialogInterface dialog, int id) {
            dialog.cancel();
          }
        });
    AlertDialog alert = builder.create();
    alert.show();
  }
  
  private void showShareItemDialog(int position) {
    Intent i = new Intent();
    i.setAction(Intent.ACTION_SEND);
    i.putExtra(Intent.EXTRA_TEXT, ((Item) listAdapter.getItem(position)).getText());
    i.setType("text/plain");
    startActivity(i);
  }
}




Java Source Code List

com.skd.swipetodelete.ItemBase.java
com.skd.swipetodelete.Item.java
com.skd.swipetodelete.MainActivity.java
com.skd.swipetodelete.explist.ItemBaseExpListAdapter.java
com.skd.swipetodelete.explist.ItemBaseExpListHandler.java
com.skd.swipetodelete.explist.ItemExpListAdapter.java
com.skd.swipetodelete.explist.ItemExpListGestureDetector.java
com.skd.swipetodelete.explist.ItemExpListManager.java
com.skd.swipetodelete.explist.MainExpListActivity.java
com.skd.swipetodelete.list.ItemBaseListAdapter.java
com.skd.swipetodelete.list.ItemBaseListHandler.java
com.skd.swipetodelete.list.ItemListAdapter.java
com.skd.swipetodelete.list.ItemListGestureDetector.java
com.skd.swipetodelete.list.ItemListManager.java
com.skd.swipetodelete.list.MainListActivity.java
com.skd.swipetodelete.menu.MenuItemBuilder.java
com.skd.swipetodelete.menu.MenuItemDesc.java
com.skd.swipetodelete.shake.ShakeDetectActivityListener.java
com.skd.swipetodelete.shake.ShakeDetectActivity.java
com.skd.swipetodelete.utils.DimenUtils.java