You'll directly get index in your onContextItemSelected(MenuItem item)
method like
int index = info.position;
and you'll get data for particular index from your ArrayList
like
int video_id=myList.get(index).getid();
Question
Cant figure out what is wrong with my code:
registerForContextMenu(lv_myhitshotlists);
AdapterContextMenuInfo menuinfo = null;
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
/*menu.setHeaderTitle("Item Operations");
menu.add(0, v.getId(), 0, "Edit Film");
menu.add(0, v.getId(), 0, "Delete Film");*/
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.context_myfilm_list,menu);
menuinfo = (AdapterContextMenuInfo) menuInfo;
menu.setHeaderTitle("Options");
}
@Override
public boolean onContextItemSelected(MenuItem item) {
try{
menuinfo = (AdapterContextMenuInfo) item.getMenuInfo();
AdapterView.AdapterContextMenuInfo info= (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
Long ids = madapter.getItemId(info.position);//what item was selected is ListView
i = ids.intValue();
switch (item.getItemId()) {
case R.id.menu_edit_myfilm:
intHitshotEdit = new Intent(MyHitshotListActivity.this,MyHitshotInfoEditActivity.class);
intHitshotEdit.putExtra("video_id", myList.get(i).getid());
intHitshotEdit.putExtra("video_title", myList.get(i).getTitle());
Toast.makeText(getApplicationContext(),myList.get(i).getTitle(), Toast.LENGTH_SHORT).show();
//intVideodetails.putExtra("video_desc", myList.get(i).get);
startActivity(intHitshotEdit);
overridePendingTransition(R.anim.slideinfromright,R.anim.slideouttoleft);
//intVideoUpload.putExtra("title",""+info.);
return true;
case R.id.menu_delete_myfilm:
return true;
default:
}
}catch(Exception e)
{
e.printStackTrace();
}
return super.onContextItemSelected(item);
}
Each and every time Long ids
is returning 0.I am binding data to listview in the onpostexecute() part of asynctask like this:
public void setAdapterToListview(ArrayList<MyHitshotListData> myList) {
madapter=new MyHitshotListAdapter(context, myList);
lv_myhitshotlists.setAdapter(madapter);
}
MyHitshotListAdapter is an adapter extending base adapter class.What is wrong??Why the value of ids is always zero??The value of position
is coming right.
La solution 2
You'll directly get index in your onContextItemSelected(MenuItem item)
method like
int index = info.position;
and you'll get data for particular index from your ArrayList
like
int video_id=myList.get(index).getid();
Autres conseils
You can get the position of the list item you long-pressed via the MenuItem
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
int listPosition = info.position;
myList.get(listPosition).getTitle();//list item title
}
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
int listPosition = info.position;
adapter.getItem(listPosition);//list item title
}