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

Android中ListView和ContextMemu使用

系統 2463 0

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

? Android中ListView和ContextMemu使用

?

?

?

Android中ListView和ContextMemu使用

?

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

             //添加上下文事件點擊事件
            list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {
    			
    			@Override
    			public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {
    				menu.setHeaderTitle("長按菜單-ContextMenu");   
    				menu.add(0, 0, 0, "彈出長按菜單0");
    				menu.add(0, 1, 0, "彈出長按菜單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);
            
            //生成動態數組,加入數據
            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和動態數組對應的元素
            SimpleAdapter listItemAdapter = new SimpleAdapter(this,listItem,//數據源 
            		 R.layout.listview,//ListItem的XML實現
                //動態數組與ImageItem對應的子項        
                new String[] {"ItemImage","ItemTitle", "ItemText"}, 
                //ImageItem的XML文件里面的一個ImageView,兩個TextView ID
                new int[] {R.id.ItemImage,R.id.ItemTitle,R.id.ItemText}
            );
           
            //添加并且顯示
            list.setAdapter(listItemAdapter);
            
            //添加選中點擊事件
            list.setOnItemClickListener(new OnItemClickListener() {

    			@Override
    			public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
    					long arg3) {
    				setTitle("點擊第"+arg2+"個項目");
    			}
    		});
            
          //添加上下文事件點擊事件
            list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {
    			
    			@Override
    			public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {
    				menu.setHeaderTitle("長按菜單-ContextMenu");   
    				menu.add(0, 0, 0, "彈出長按菜單0");
    				menu.add(0, 1, 0, "彈出長按菜單1");   
    			}
    		}); 
        }
    	
    	//長按菜單響應函數
    	@Override
    	public boolean onContextItemSelected(MenuItem item) {
    		setTitle("點擊了長按菜單里面的第"+item.getItemId()+"個項目"); 
    		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>
  

?

?

下面一個實例:

?

    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”,否則出錯
         */
        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);
        //設置適配器
        setListAdapter(adapter);
        //為 ListView 的所有 item 注冊 ContextMenu
        this.registerForContextMenu(getListView());
        
        btnadd.setOnClickListener(new Button.OnClickListener()
        {

			@Override
			public void onClick(View v) {
				list.add(inputtext.getText().toString());
				adapter.notifyDataSetChanged();
				inputtext.setText("");
			}
        	
        });
    }
    
    
    //設置Context,用來進行刪除操作
	@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(), "刪除此項", Toast.LENGTH_SHORT).show();
	}


	/**
	 * 創建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,"關于我");
	}
	
	/**
	 * ContextMenu中選項被選中的事件
	 */
	@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),
			 * 所以當執行到這里的時候,如果直接使用Long型的話,由于不是int型的,所以默認
			 * 使用的是:boolean java.util.ArrayList.remove(Object object)
			 * 兩個remove()不匹配,所以重載的是remove(Object object),而這個方法是不能刪除item的
			 * 所以需要將得到的position強制轉換為int型的才能運行
			 */
			//list.remove(getListAdapter().getItemId(menuInfo.position));這句話是錯誤的
			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(), "刪除此項", 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使用


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国内精品久久久久影院一蜜桃 | 国产香蕉偷在线观看视频 | 日日夜夜天天人人 | 久久精品视频观看 | 日本不卡免费 | 欧洲一级毛片免费 | 亚洲精品成人网 | 国产成年网站v片在线观看 国产成人 免费观看 | 一区二区三区日韩精品 | 国产99视频精品免费视频免里 | 国产欧美一区二区久久 | 久热这里只有精品99国产6 | 九九九九热精品免费视频 | 欧美一级毛片欧美一级无片 | 老司机午夜精品视频 | 精品国产品香蕉在线观看75 | 亚洲综合激情 | 99热久久久这里只有精品免费 | 欧美色亚洲图 | 亚洲国产综合视频 | 亚洲国产美女精品久久 | 免费a级毛片大学生免费观看 | 免费夜色污私人影院网站 | 国产精品久久久久影视不卡 | 在线亚洲精品国产成人二区 | 狠狠色噜噜狠狠狠狠网站视频 | 亚洲国产天堂久久综合9999 | 亚洲精品一区二区三区四区手机版 | 久草在线首页 | 在线视频久 | 亚洲综合精品香蕉久久网 | 亚洲成色在线综合网站 | 激情视频日本 | 欧美三级做爰视频 | 欧美中文字幕在线播放 | 亚洲综合久久久久久中文字幕 | 欧美性色xo在线 | 欧美怡红院免费全部视频 | 国产成人一区二区在线不卡 | 国产精品揄拍一区二区久久 | 欧美日韩顶级毛片www免费看 |