Pregunta

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.

¿Fue útil?

Solución 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();

Otros consejos

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
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top