androidlistview菜單
Ⅰ android中用java寫的一個頁面中listview有很多個菜單,其子菜單id怎麼取
問題描述清楚點唄~~~很多個菜單?是長按出現的上下文菜單還是listview的子項?
如果你是說ContextMenu菜單的話,在onContextItemSelected(MenuItem item)這個方法中判斷item.getId()與你之前存入menu的第二個參數匹配,再作操作~~~
Ⅱ 安卓編程中怎麼給listview的item加上上下文菜單呢用嗎
protected void onCreate(Bundle savedInstanceState) {
... ...
//步驟1:向ListView注冊Context Menu,當系統檢測到用戶長按某單元是,觸發Context Menu彈出
registerForContextMenu(getListView());
}
// 步驟2:創建ContextMenu同OptionMenu,用戶長按元素後,會彈出菜單
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
menu.add(Menu.NONE,DELETE_ID,Menu.NONE,"Delete");
super.onCreateContextMenu(menu, v, menuInfo);
}
//步驟 3: ContextMenu的觸發操作,例子將觸發delete()
public boolean onContextItemSelected(MenuItem item) {
switch(item.getItemId()){
case DELETE_ID:
/* 在此處,我們關鍵引入
AdapterView.AdapterContextMenuInfo來獲取單元的信息。在有三個重要的信息。 1、id:The row id of
the item for which the context menu is being displayed
,在cursorAdaptor中,實際就是表格的_id序號; 2、position
是list的元素的順序;3、view就可以獲得list中點擊元素的View,通過view可以獲取裡面的顯示的信息 */
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo();
delete(info.id);
return true;
default:
break;
}
return super.onContextItemSelected(item);
}
Ⅲ android中我使用了drawerlayout實現側滑菜單,主界面是一個listview,為什麼
給側滑菜單布局添加屬性android:clickable="true"
Ⅳ Android中怎麼實現多級菜單子菜單中listview中RadioButton互斥
這個很簡單啊。。把這個欄位設置成唯一性約束就可以了,主鍵或者唯一性約束都行。
Ⅳ android 中listview 的用法
1.在xml裡面定義一個ListView,這個xml是一個activity的layout文件
<?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" //定義一個listView
android:layout_height="wrap_content"
android:id="@+id/ListView01"
/>
</LinearLayout>
2.定義ListView每個條目的Layout,比如命名為listview_item.xml,用RelativeLayout實現:
<?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>
3.在Activity裡面調用和加入Listener,具體見注釋:
package com.ray.test;
import java.util.ArrayList;
import java.util.HashMap;
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.ListView;
import android.widget.SimpleAdapter;
import android.widget.AdapterView.OnItemClickListener;
public class TestListView 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.checked);//圖像資源的ID
map.put("ItemTitle", "Level "+i);
map.put("ItemText", "Finished in 1 Min 54 Secs, 70 Moves! ");
listItem.add(map);
}
//生成適配器的Item和動態數組對應的元素,這里用SimpleAdapter作為ListView的數據源
//如果條目布局比較復雜,可以繼承BaseAdapter來定義自己的數據源。
SimpleAdapter listItemAdapter = new SimpleAdapter(this,listItem,//數據源
R.layout.list_items,//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.(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);
}
}
Ⅵ android ListView用法和屬性
ListView是一個用來縱向顯示條目的視圖,這些條目內容來自於與該ListView相關聯的ListAdapter.
android:divider//在列表條目之間顯示的drawable或color
android:dividerHeight//用來指定divider的高度
android:entries//構成ListView的數組資源的引用。對於某些固定的資源,這個屬性提供了比在程序中添加資源更加簡便的方式
android:footerDividersEnabled//當設為false時,ListView將不會在各個footer之間繪制divider.默認為true。
android:headerDividersEnabled//當設為false時,ListView將不會在各個header之間繪制divider.默認為true
android:cacheColorHint// 表明這個列表的背景始終以單一、固定的顏色繪制,可以優化繪制過程。
android:choiceMode//為視圖指定選擇的行為。可選的類型有:none、singleChoice、multipleChoice、multipleChoiceModal。
android:drawSelectorOnTop// 若設為true,選擇器將繪制在選中條目的上層。默認為false。
android:fastScrollEnabled// 設置是否允許使用快速滾動滑塊。
android:addStatesFromChildren// 設置這個ViewGroup的drawable狀態是否包括子View的狀態。若設為true,當子View如EditText或Button獲得焦點時,整個ViewGroup也會獲得焦點。
android:alwaysDrawnWithCache// 設置ViewGroup在繪制子View時是否一直使用繪圖緩存。默認為true。
android:animationCache// 設置布局在繪制動畫效果時是否為其子View創建繪圖緩存。若設為true,將會消耗更多的內存,要求持續時間更久的初始化過程,但表現更好。默認為true。
android:clipChildren// 設置子View是否受限於在自己的邊界內繪制。若設為false,當子View所佔用的空間大於邊界時可以繪制在邊界外。默認為true。
android:clipToPadding//定義布局間是否有間距。默認為true。
android:descendantFocusability// 定義當尋找一個焦點View的時候,ViewGroup與其子View之間的關系。可選項為:
//(1)beforeDescendants ViewGroup會比其子View更先獲得焦點;
//(2)afterDescendants 只有當無子View想要獲取焦點時,ViewGroup才會獲取焦點;
//(3)blockDescendants ViewGroup會阻止子View獲取焦點
android:layoutAnimation//定義當ViewGroup第一次展開時的動畫效果,也可人為地在第一次展開後調用。
android:persistentDrawingCache// 定義繪圖緩存的持久性。有如下可選項:
//(1)none 當使用過後不保留繪圖緩存
//(2)animation 在layout animation之後保留繪圖緩存
//(3)scrolling 在Scroll操作後保留繪圖緩存
//(4)all always保留繪圖緩存
android:listSelector// 設置選中項顯示的可繪制對象,可以是圖片或者顏色屬性。
android:scrollingCache// 設置在滾動時是否使用繪制緩存。若設為true,則將使滾動表現更快速,但會佔用更內存。默認為true。
android:smoothScrollbar// 為真時,列表會使用更精確的基於條目在屏幕上的可見像素高度的計算方法。默認該屬性為真,如果你的適配器需要繪制可變高的條目,他應該設為假。當該屬性為真時,你在適配器在顯示變高條目時,滾動條的把手會在滾動的過程中改變大小。當設為假時,列表只使用適配器中的條目數和屏幕上的可見條目來決定滾動條的屬性。
android:stackFromBottom// 設置GridView和ListView是否將內容從底部開始顯示。
android:textFilterEnabled// 當設為真時,列表會將結果過濾為用戶類型。前提是這個列表的Adapter必須支持Filterable介面。
android:transcriptMode//設置列表的transcriptMode.有如下選項可選:
//(1)disabled 禁用TranscriptMode,也是默認值;
//(2)normal 當新條目添加進列表中並且已經准備好顯示的時候,列表會自動滑動到底部以顯示最新條目;
//(3)alwaysScroll 列表會自動滑動到底部,無論新條目是否已經准備好顯示.
目前推薦用的是 RecycleView
Ⅶ Android的程序,怎樣同時實現動態添加ListView條目和長按條目彈出菜單選擇是否刪除功能
這個listview動態增減很簡單的,你從適配器的數據著手,就是你遍歷的數據,然後增的話在數據中加多一條數據,然後adapter.notifiyDataSetChanged();長按彈出菜單就是listview的那個長按監聽事件,好像是什麼OnItemLong什麼的,你找下,在那裡調用菜單
Ⅷ Android開發中ListView比較少見的棘手問題,希望來個高手解決
/**
* Maps a point to a position in the list.
*
* @param x X in local coordinate
* @param y Y in local coordinate
* @return The position of the item which contains the specified point, or
* {@link #INVALID_POSITION} if the point does not intersect an item.
*/
public int pointToPosition(int x, int y)
另外,點擊ListView中的item時改變它的背景顏色,這個只需要設置一個background就可以了,不需要手動編程實現。
Ⅸ android 在listview上注冊上下文菜單 然後對listview的item進行操作怎麼實現
MyListAdapter listAdapter = new MyListAdapter(mLists, mContext);
ListView listiew = (ListView) findViewById(R.id.listview);
listiew.setAdapter(listAdapter);
listiew.setOnItemClickListener(new MyOnItemClickListener());
Ⅹ android 給listView注冊上下文菜單的時候,如何知道當前的Item內容是什麼高手請指點
ListView點擊的時候會有一個position 可以通過position來獲取你listView綁定的數據源中的數據的 如果是List<Object>data 可以直接data.get(position).getXxx();來獲取Object的屬性 如果是數組 就可以直接a[position];