ListView:单击和长按弹出上下文菜单(ContextMenu)

1、MainActivity.java

 

 

package com.pop.projects;

import java.util.ArrayList;

import android.app.Activity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.MenuItem;
import android.view.View;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.View.OnCreateContextMenuListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;

public class MainActivity extends Activity {
	// ===========================================================     
    // Final Fields     
    // ===========================================================     
    protected static final int CONTEXTMENU_DELETEITEM = 0;     
    
    // ===========================================================     
    // Fields     
    // ===========================================================     
    
    protected ListView mFavList;     
    protected ArrayList<Favorite> fakeFavs = new ArrayList<Favorite>();     
    
    // ===========================================================     
    // "Constructors"     
    // ===========================================================     
    
    /** Called when the activity is first created. */     
    @Override     
    public void onCreate(Bundle icicle) {     
         super.onCreate(icicle);     
         setContentView(R.layout.main);     
    
         /* Add some items to the list the listview will be showing. */     
         fakeFavs.add(new Favorite("John", "nice guy"));     
         fakeFavs.add(new Favorite("Yasmin", "hot girl"));     
         fakeFavs.add(new Favorite("Jack", "cool guy"));     
    
         this.mFavList = (ListView) this.findViewById(R.id.list_favorites);     
         initListView();     
    }     
    
    private void refreshFavListItems() {     
         mFavList.setAdapter(new ArrayAdapter<Favorite>(this,     
                   android.R.layout.simple_list_item_1, fakeFavs));     
    }     
    
    private void initListView() {     
         /* Loads the items to the ListView. */     
         refreshFavListItems();     
    
         /* Add Context-Menu listener to the ListView. */     
         mFavList.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {     
    
              public void onCreateContextMenu(ContextMenu conMenu, View view , ContextMenuInfo info) {     
                   conMenu.setHeaderTitle("ContextMenu");     
                   conMenu.add(0, 0, 0, "Delete this favorite!");     
                      
                   /* Add as many context-menu-options as you want to. */     
              }     
         });     
         
         mFavList.setOnItemClickListener(new OnItemClickListener()
		{
			@Override
			public void onItemClick(AdapterView<?> parent, View view, int position, long id)
			{
				Toast.makeText(MainActivity.this, "111111111111", 200).show() ;
			}
		});
    }     
    
    // ===========================================================     
    // Methods from SuperClass/Interfaces     
    // ===========================================================     
    
    @Override     
    public boolean onContextItemSelected(MenuItem aItem) {     
         ContextMenuInfo menuInfo = (ContextMenuInfo) aItem.getMenuInfo();     
    
         /* Switch on the ID of the item, to get what the user selected. */     
         switch (aItem.getItemId()) {     
              case CONTEXTMENU_DELETEITEM:     
                   /* Get the selected item out of the Adapter by its position. */     
                   Favorite favContexted = (Favorite) mFavList.getAdapter()     
                        .getItem(0);     
                   /* Remove it from the list.*/     
                   fakeFavs.remove(favContexted);     
    
                   refreshFavListItems();     
                   return true; /* true means: "we handled the event". */     
         }     
         return false;     
    }     
    
    // ===========================================================     
    // Inner and Anonymous Classes     
    // ===========================================================     
    
    /** Small class holding some basic */     
    protected class Favorite {     
    
         protected String name;     
         protected String kindness;     
    
         protected Favorite(String name, String kindness) {     
              this.name = name;     
              this.kindness = kindness;     
         }     
    
         /** The ListView is going to display the toString() return-value! */     
         public String toString() {     
              return name + " (" + kindness + ")";     
         }     
    
         public boolean equals(Object o) {     
              return o instanceof Favorite && ((Favorite) o).name.compareTo(name) == 0;     
         }     
    }     
}    

 

 

2、main.xml

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android ="http://schemas.android.com/apk/res/android"    
     android:orientation ="vertical"    
     android:layout_width ="fill_parent"    
     android:layout_height ="fill_parent" >    
     <TextView    
          android:layout_width ="fill_parent"    
          android:layout_height ="wrap_content"    
          android:text ="Long-Press on of the Items in the list." />    
     <ListView android:id ="@+id/list_favorites"    
          android:layout_width ="fill_parent"    
          android:layout_height ="fill_parent" />    
</LinearLayout>  

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值