0
我有兩個編輯文本中的每個listView項目。 當用戶長按listView中的任何項目時,我顯示一個contextMenu並給出兩個選項現在編輯和刪除我怎麼知道listView用戶中的哪個項目長按打開contextmenu。檢測哪個選定的項目(在ListView中)產生了ContextMenu
XML of each item of ListView
<?xml version="1.0" encoding="utf-8"?>
<TextView android:id="@+id/templateId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView android:id="@+id/templateTextId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
XML for context menu
<?xml version="1.0" encoding="utf-8"?>
<menu
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/editTemplate"
android:title="Edit" />
<item android:id="@+id/saveTemplate"
android:title="Save" />
<item android:id="@+id/deleTemplate"
android:title="Delete" />
Code
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)
{
super.onCreateContextMenu(menu, v, menuInfo);
menu.setHeaderTitle("Select The Action");
menu.add(0, v.getId(), 0, "Edit");
menu.add(0, v.getId(), 0, "Delete");
TextView tv=(TextView)v.findViewById(R.id.templateId);
selectedId=tv.getText().toString();
TextView tvMessage=(TextView)v.findViewById(R.id.templateTextId);
selectedTemplate=tvMessage.getText().toString();
//Toast.makeText(getApplicationContext(), "Item In List View Clicked ",Toast.LENGTH_SHORT).show();
}
@Override
public boolean onContextItemSelected(MenuItem item) {
if(item.getTitle()=="Edit")
{
// Toast.makeText(ShowTemplates.this, "Edit Clicked",Toast.LENGTH_SHORT).show();
Context mContext = getApplicationContext();
Dialog dialog = new Dialog(ShowTemplates.this);
dialog.setContentView(R.layout.custome_dialog_edit_template);
dialog.setTitle("Edit Template");
txtMsgTemplate = (EditText) dialog.findViewById(R.id.editTextTemplateCustomDialog);
txtMsgTemplate.setText(selectedTemplate);
Button btnSave=(Button)dialog.findViewById(R.id.btnSaveEditedTemplate);
dialog.show();
}
我試圖找到它,我得到了以下
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
// Get the info on which item was selected
AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo;
// Get the Adapter behind your ListView (this assumes you're using
// a ListActivity; if you're not, you'll have to store the Adapter yourself
// in some way that can be accessed here.)
Adapter adapter = getListAdapter();
// Retrieve the item that was clicked on
Object item = adapter.getItem(info.position);
}
但我不知道如何使用這個Item對象。 有沒有其他方法可以做到這一點。 謝謝
getSelectedItemPosition返回-1。它不適用於longClick事件。 – kamal 2012-07-31 10:37:22
等一下,你沒有itemLongClickListener爲你的listview?如果是這樣的話,函數'public boolean onItemLongClick(AdapterView > adapterView,View view,int position,long arg3)'應該給你longclicked item的位置。當然,那是你在找什麼? – Valentin 2012-07-31 12:56:52