Android Open Source - ListView-Swipe-to-Delete Main Exp 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.explist;
// w w w.j  a  va 2  s. c om
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.ExpandableListView;

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

/*
 * Main activity class for expandable 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 child items are placed at the bottom of the list's group.
 * Two sample menu actions are implemented: edit list view item and share. 
 */

public class MainExpListActivity extends Activity {
  private ExpandableListView list;
  private ItemExpListAdapter listAdapter;
  private ItemExpListHandler listHandler;
  private ItemExpListManager listManager;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_explist);

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

    listManager = new ItemExpListManager(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<2; i++) {
      listAdapter.addGroup("Group " + (i + 1));
      ArrayList<ItemBase> items = new ArrayList<ItemBase>();
      for (int j=0; j<3; j++) {
        items.add(new Item((j + 1), "Item " + (j + 1)));
      }
      listAdapter.addChild(items);
    }
  }

  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 ItemExpListHandler extends ItemBaseExpListHandler {

    public ItemExpListHandler(ExpandableListView list) {
      super(list);
    }

    @Override
    public void onItemMenuAction(int groupPosition, int childPosition, String action) {
      if (action.equals(getString(R.string.editAction))) {
        showEditItemConfirmDialog(groupPosition, childPosition);
      }
      else if (action.equals(getString(R.string.shareAction))) {
        showShareItemDialog(groupPosition, childPosition);
      }
    }
  }
  
  private void showEditItemConfirmDialog(final int groupPosition, final int childPosition) {
    final EditText itemText = new EditText(this); 
    
    AlertDialog.Builder builder = new AlertDialog.Builder(MainExpListActivity.this);
    builder.setMessage("Edit task?")
        .setCancelable(false)
        .setView(itemText)
        .setPositiveButton("Save changes",
            new DialogInterface.OnClickListener() {
              public void onClick(DialogInterface dialog, int id) {
                listAdapter.edit(groupPosition, childPosition, 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 groupPosition, int childPosition) {
    Intent i = new Intent();
    i.setAction(Intent.ACTION_SEND);
    i.putExtra(Intent.EXTRA_TEXT, ((Item) listAdapter.getChild(groupPosition, childPosition)).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