Android 台灣中文網
標題:
如何修改contextMenu title的名稱
[打印本頁]
作者:
wind8894
時間:
2012-12-9 22:36
標題:
如何修改contextMenu title的名稱
我有一個字串陣列,有3個字串,把它放到listview顯示出來
然後長按後顯示ContextMenu,他的HeaderTitle要顯示選擇的那個字串名稱
那麼在contextMenu.setHeaderTitle("測試檔案_音樂檔.mp3"); 這邊要怎麼做修改呢?
private String[] imgText = {
"測試檔案_圖片.jpeg", "測試檔案_簡報檔.pptx", "測試檔案_音樂檔.mp3"
};
listView.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {
@Override
public void onCreateContextMenu(ContextMenu contextMenu, View v,
ContextMenuInfo info) {
// TODO Auto-generated method stub
contextMenu.setHeaderTitle("測試檔案_音樂檔.mp3");
contextMenu.add(0, 0, 0, R.string.openfile);
contextMenu.add(0, 1, 0, R.string.upload);
contextMenu.add(0, 2, 0, R.string.addfavorite);
contextMenu.add(0, 3, 0, R.string.sharefile);
}
});
複製代碼
作者:
ploglin
時間:
2012-12-10 09:31
用一個全域的變數就可以了啊?
(是我想的太簡單了嗎?)
作者:
wind8894
時間:
2012-12-10 18:35
所以他能夠這樣嗎?
contextMenu.setHeaderTitle(imgText[0]);
複製代碼
??
作者:
ploglin
時間:
2012-12-11 09:14
可以呀,只要你的 imgText 是 String array 就沒問題了
作者:
wind8894
時間:
2012-12-11 17:32
那我要改成這樣嗎?
for (int i = 0; i < image.length; i++) {
contextMenu.setHeaderTitle(imgText[i].toString());
contextMenu.add(0, 0, 0, R.string.openfile);
contextMenu.add(0, 1, 0, R.string.upload);
contextMenu.add(0, 2, 0, R.string.addfavorite);
contextMenu.add(0, 3, 0, R.string.sharefile);
}
複製代碼
作者:
ploglin
時間:
2012-12-11 17:48
我不懂的是為什麼你會有一個 for 迴圈。
header title 是當觸發的時候去異動的,你這樣做只會吃最後一個內容。而且menu會新增很多個?
作者:
wind8894
時間:
2012-12-11 17:54
因為我是一個listview,當長按某個listitem時,會跳出ContextMenu
所以會有好多個item,所以才不知道這邊要如何做修改
imgText[].toString()
複製代碼
作者:
ploglin
時間:
2012-12-12 09:59
ListView 的話,會用 ArrayAdapter 或 SimpleAdapter
使用 ListView 的 onItemLongClick 會回傳 adapter, view, position id。
在 onItemLongClick 的事件中,利用 position 去取得目前對應的資料,再去異動 title 就可以了
作者:
wind8894
時間:
2012-12-12 23:54
這樣會有錯 是這樣改嗎?
imgText[position].toString()
複製代碼
listView.setOnItemLongClickListener(new OnItemLongClickListener() {
public boolean onItemLongClick(AdapterView<?> adapter, View view, int position, long id) {
listView.showContextMenu();
return true;
}
});
listView.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {
@Override
public void onCreateContextMenu(ContextMenu contextMenu, View v,
ContextMenuInfo info) {
// TODO Auto-generated method stub
contextMenu.setHeaderTitle(imgText[position].toString());
contextMenu.add(0, 0, 0, R.string.openfile);
contextMenu.add(0, 1, 0, R.string.upload);
contextMenu.add(0, 2, 0, R.string.addfavorite);
contextMenu.add(0, 3, 0, R.string.sharefile);
}
});
複製代碼
作者:
ploglin
時間:
2012-12-13 09:13
wind8894 發表於 2012-12-12 23:54
登錄/註冊後可看大圖
這樣會有錯 是這樣改嗎?
差不多是這個意思了,不過你可能要跑看看有沒錯誤。
作者:
wind8894
時間:
2012-12-13 22:07
在onCreate外設了 int position; 全域變數後,雖然不會報錯了,但不管點哪一項都只會顯示第一個,是哪裡寫錯了呢?
listView.setOnItemLongClickListener(new OnItemLongClickListener() {
public boolean onItemLongClick(AdapterView<?> adapter, View view, int position, long id) {
listView.showContextMenu();
return true;
}
});
listView.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {
@Override
public void onCreateContextMenu(ContextMenu contextMenu, View v,
ContextMenuInfo info) {
// TODO Auto-generated method stub
contextMenu.setHeaderTitle(imgText[position].toString());
contextMenu.add(0, 0, 0, R.string.openfile);
contextMenu.add(0, 1, 0, R.string.upload);
contextMenu.add(0, 2, 0, R.string.addfavorite);
contextMenu.add(0, 3, 0, R.string.sharefile);
}
});
複製代碼
作者:
ploglin
時間:
2012-12-14 09:01
onItemLongClick 裡面有一個 position 跟你全域變數的名稱有衝突。
應該是要改成在 onItemLongClick 的 function 中,把 position 的值給全域變的的 position
歡迎光臨 Android 台灣中文網 (https://apk.tw/)
Powered by Discuz! X3.1