亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Android中ListView和ContextMemu使用

系統(tǒng) 2731 0

?? 在ListView選中一行,可以顯示上下文界面如下:

? Android中ListView和ContextMemu使用

?

?

?

Android中ListView和ContextMemu使用

?

在ListView中添加上下文菜單ContextMenu的核心代碼:

             //添加上下文事件點(diǎn)擊事件
            list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {
    			
    			@Override
    			public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {
    				menu.setHeaderTitle("長(zhǎng)按菜單-ContextMenu");   
    				menu.add(0, 0, 0, "彈出長(zhǎng)按菜單0");
    				menu.add(0, 1, 0, "彈出長(zhǎng)按菜單1");   
    			}
    		}); 
  

?

源代碼如下:

    package com.easyway.android.listview;

import java.util.ArrayList;
import java.util.HashMap;

import android.app.Activity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnCreateContextMenuListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.SimpleAdapter;
/**
 * ListView和上下文菜單的使用
 * @author longgangbai
 *
 */
public class ListViewActivity extends Activity {
	
    	@Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            
            //綁定Layout里面的ListView
            ListView list = (ListView) findViewById(R.id.ListView01);
            
            //生成動(dòng)態(tài)數(shù)組,加入數(shù)據(jù)
            ArrayList<HashMap<String, Object>> listItem = new ArrayList<HashMap<String, Object>>();
            for(int i=0;i<10;i++)
            {
            	HashMap<String, Object> map = new HashMap<String, Object>();
            	map.put("ItemImage", R.drawable.icon);//圖像資源的ID
            	map.put("ItemTitle", "Level "+i);
            	map.put("ItemText", "Finished in 1 Min 54 Secs, 70 Moves! ");
            	listItem.add(map);
            }
           
            //生成適配器的Item和動(dòng)態(tài)數(shù)組對(duì)應(yīng)的元素
            SimpleAdapter listItemAdapter = new SimpleAdapter(this,listItem,//數(shù)據(jù)源 
            		 R.layout.listview,//ListItem的XML實(shí)現(xiàn)
                //動(dòng)態(tài)數(shù)組與ImageItem對(duì)應(yīng)的子項(xiàng)        
                new String[] {"ItemImage","ItemTitle", "ItemText"}, 
                //ImageItem的XML文件里面的一個(gè)ImageView,兩個(gè)TextView ID
                new int[] {R.id.ItemImage,R.id.ItemTitle,R.id.ItemText}
            );
           
            //添加并且顯示
            list.setAdapter(listItemAdapter);
            
            //添加選中點(diǎn)擊事件
            list.setOnItemClickListener(new OnItemClickListener() {

    			@Override
    			public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
    					long arg3) {
    				setTitle("點(diǎn)擊第"+arg2+"個(gè)項(xiàng)目");
    			}
    		});
            
          //添加上下文事件點(diǎn)擊事件
            list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {
    			
    			@Override
    			public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {
    				menu.setHeaderTitle("長(zhǎng)按菜單-ContextMenu");   
    				menu.add(0, 0, 0, "彈出長(zhǎng)按菜單0");
    				menu.add(0, 1, 0, "彈出長(zhǎng)按菜單1");   
    			}
    		}); 
        }
    	
    	//長(zhǎng)按菜單響應(yīng)函數(shù)
    	@Override
    	public boolean onContextItemSelected(MenuItem item) {
    		setTitle("點(diǎn)擊了長(zhǎng)按菜單里面的第"+item.getItemId()+"個(gè)項(xiàng)目"); 
    		return super.onContextItemSelected(item);
    	}
    }
  

?

ListView中每行的配置信息:

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
	android:id="@+id/RelativeLayout01" 
	android:layout_width="fill_parent" 
	xmlns:android="http://schemas.android.com/apk/res/android" 
	android:layout_height="wrap_content" 
	android:paddingBottom="4dip" 
	android:paddingLeft="12dip"
	android:paddingRight="12dip">
<ImageView 
	android:paddingTop="12dip"
	android:layout_alignParentRight="true"
	android:layout_width="wrap_content" 
	android:layout_height="wrap_content" 
	android:id="@+id/ItemImage"
	/> 
<TextView 
    android:text="TextView01" 
    android:layout_height="wrap_content" 
    android:textSize="20dip" 
    android:layout_width="fill_parent" 
    android:id="@+id/ItemTitle"
    />
<TextView 
	android:text="TextView02" 
	android:layout_height="wrap_content" 
	android:layout_width="fill_parent" 
	android:layout_below="@+id/ItemTitle" 
	android:id="@+id/ItemText"
	/>
</RelativeLayout>
  

?

?

主界面的xml配置:

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
	android:id="@+id/LinearLayout01" 
	android:layout_width="fill_parent" 
	android:layout_height="fill_parent" 
	xmlns:android="http://schemas.android.com/apk/res/android">
<ListView android:layout_width="wrap_content" 
          android:layout_height="wrap_content" 
          android:id="@+id/ListView01"
          />
</LinearLayout>
  

?

?

下面一個(gè)實(shí)例:

?

    package com.easyway.android.listview;


import java.util.ArrayList;

import android.app.ListActivity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;

public class ArrayActivity extends ListActivity {
	private EditText inputtext;
	private Button btnadd;
	private ArrayList<String> list = new ArrayList<String>();
	ArrayAdapter<String> adapter;
	private static final int ITEM1=Menu.FIRST;
	private static final int ITEM2=Menu.FIRST+1;
	private static final int ITEM3=Menu.FIRST+2;
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        /**
         * 這里雖然是繼承了ListActivit,但是如果想使用自己的布局,
         * ListView中的id必須是“@android:id/list”,否則出錯(cuò)
         */
        setContentView(R.layout.ilistview);
        inputtext = (EditText)findViewById(R.id.edittext);
        btnadd = (Button)findViewById(R.id.additem);
       
        adapter = new ArrayAdapter<String>(
        		this,
        		android.R.layout.simple_expandable_list_item_1,
        		list);
        //設(shè)置適配器
        setListAdapter(adapter);
        //為 ListView 的所有 item 注冊(cè) ContextMenu
        this.registerForContextMenu(getListView());
        
        btnadd.setOnClickListener(new Button.OnClickListener()
        {

			@Override
			public void onClick(View v) {
				list.add(inputtext.getText().toString());
				adapter.notifyDataSetChanged();
				inputtext.setText("");
			}
        	
        });
    }
    
    
    //設(shè)置Context,用來(lái)進(jìn)行刪除操作
	@Override
	protected void onListItemClick(ListView l, View v, int position, long id) {
		// TODO Auto-generated method stub
		super.onListItemClick(l, v, position, id);
		list.remove(position);
		adapter.notifyDataSetChanged();
		Toast.makeText(getApplicationContext(), "刪除此項(xiàng)", Toast.LENGTH_SHORT).show();
	}


	/**
	 * 創(chuàng)建ContextMenu菜單
	 */
	@Override
	public void onCreateContextMenu(ContextMenu menu, View v,
			ContextMenuInfo menuInfo) {
		// TODO Auto-generated method stub
		super.onCreateContextMenu(menu, v, menuInfo);
		menu.setHeaderTitle("提示信息");
		menu.setHeaderIcon(R.drawable.icon);
		menu.add(0,ITEM1,0,"刪除Item");
		menu.add(0,ITEM2,0,"添加Item");
		menu.add(0,ITEM3,0,"關(guān)于我");
	}
	
	/**
	 * ContextMenu中選項(xiàng)被選中的事件
	 */
	@Override
	public boolean onContextItemSelected(MenuItem item) {
		AdapterContextMenuInfo menuInfo = (AdapterContextMenuInfo)item.getMenuInfo(); 
		switch(item.getItemId())
		{
		case ITEM1:
			//System.out.println("Item id="+item.getItemId());
			//System.out.println("position="+getListAdapter().getItemId(menuInfo.position));
			/**
			 * getListAdapter().getItemId(menuInfo.position)返回的值是Long型,
			 * 而list.remove(position)是String java.util.ArrayList.remove(int index),
			 * 所以當(dāng)執(zhí)行到這里的時(shí)候,如果直接使用Long型的話,由于不是int型的,所以默認(rèn)
			 * 使用的是:boolean java.util.ArrayList.remove(Object object)
			 * 兩個(gè)remove()不匹配,所以重載的是remove(Object object),而這個(gè)方法是不能刪除item的
			 * 所以需要將得到的position強(qiáng)制轉(zhuǎn)換為int型的才能運(yùn)行
			 */
			//list.remove(getListAdapter().getItemId(menuInfo.position));這句話是錯(cuò)誤的
			int pos = (int) getListAdapter().getItemId(menuInfo.position);
			if(list.remove(pos) != null)
			{
				System.out.println("success");
			}
			else
			{
				System.out.println("failed");
			}		
			//通知適配器更新
			adapter.notifyDataSetChanged();
			Toast.makeText(getApplicationContext(), "刪除此項(xiàng)", Toast.LENGTH_SHORT).show();
			break;
		case ITEM2:
			list.add("I am android !");
			adapter.notifyDataSetChanged();
			break;
		case ITEM3:
			Toast.makeText(getApplicationContext(), "I am android !", Toast.LENGTH_SHORT).show();
			break;
		}
		return super.onContextItemSelected(item);
	}

}
  

?

listview的布局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"
    >
<LinearLayout
	android:orientation="horizontal"
	android:layout_width="match_parent"
	android:layout_height="wrap_content">
	<EditText
		android:id="@+id/edittext"
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
		android:layout_weight="1"
	/>
	<Button
		android:id="@+id/additem"
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
		android:layout_weight="4"
		android:text="添加"
	/>
</LinearLayout>

 <ListView
 	android:id="@android:id/list"
 	android:layout_width="fill_parent"
 	android:layout_height="wrap_content"
 />
</LinearLayout>
  

?

Android中ListView和ContextMemu使用


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦?。。?/p>

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 亚洲综合色就色手机在线观看 | 日日夜夜中文字幕 | porno日本xxxxx视频 | 四虎影视在线看免费 720p | 国产成人精品日本亚洲语音2 | 妖精视频在线看免费视频 | 日韩在线观看一区二区三区 | 九九在线精品视频播放 | 国产美女免费国产 | 国产精品亚洲精品 | 久久国产热这里只有精品8 久久国产三级 | 欧美大片a一级毛片视频 | 四虎影视入口 | 日日干日日操 | 草逼网站| 日本精品视频 | 亚洲欧美强伦一区二区另类 | 日本色吧| 成人在线精品视频 | 77777奇米| 日本一区二区精品 | 亚洲操综合 | 特黄日韩免费一区二区三区 | 久热这里只精品99re8久 | 欧美成人免费在线观看 | 久久久久青草大香线综合精品 | 玖玖国产 | 91久久综合九色综合欧美98 | 婷婷六月色 | 中文字幕在线播放 | 一区二区三区美女视频 | 男人都懂的网址 | 亚洲经典在线中文字幕 | 日本一本久 | 黄色免费网站在线观看 | 毛片在线观看网站 | 久久国产视频网 | 五月天在线婷婷 | 99精品欧美一区 | 久久精品久久久久 | 伊在人亚洲香蕉精品区麻豆 |