2012-06-19 2 views
1
setListAdapter(new ArrayAdapter<String>(this,R.layout.custom_list_item, r)); 

protected void onListItemClick(ListView list, View view, int position, long id) { 
       super.onListItemClick(list, view, position, id); 

        fname=r.get(position); 

내가 배열 어댑터android에서 선택한 컨텍스트 항목에서 위치를 얻는 방법은 무엇입니까?

등으로부터도 위치와 이름을 가지고 위의 코드는, 내가받을 필요가 이러한 모든 상황에 맞는 메뉴의 값이 어떻게 그것을

public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { 
     super.onCreateContextMenu(menu, v, menuInfo); 
     menu.setHeaderTitle("Playlist Option"); 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.context_menu, menu);  

    } 

public boolean onContextItemSelected(MenuItem item) { 

// here I select the particular list value, that the value position I need that is only I delete that position from server. what are the data i fetch here? and its possible to get position from array list? 
}   
+0

하나의 방법, 같이 IndexOf (개체 OBJ), 그것을 시도가있다 .. –

답변

2

당신은 AdapterContextMenuInfo을 사용할 수 있습니다 얻을 수 있습니다

public boolean onContextItemSelected(MenuItem item) { 
    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); 

    switch (item.getItemId()) { 
     case R.id.delete: 
      String itemName = r.get[(int) info.id]; // This item you will delete 
                // from list 
      return true; 


     } 
    } 
+0

정말 대단히 감사합니다 –

+0

시간에 삭제 의미를 숨기는 콘텐츠 .. 어떻게? pls 도움이됩니다. –

+0

무슨 뜻입니까? –

1
public class DataDemo extends Activity { 

    public ArrayList<HashMap<String, String>> ContactList = new ArrayList<HashMap<String, String>>(); 

    private static final String TAG_ID = "id"; 
    private static final String TAG_NAME = "name"; 
    private static final String TAG_PHNO = "phNo"; 

    private static int itemIndex; 
    private ListView lst; 
    private List<Contact> contacts; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_database_demo); 
     lst = (ListView) findViewById(R.id.lstContact); 
    } 

    @Override 
    public void onCreateContextMenu(ContextMenu menu, View v, 
      ContextMenuInfo menuInfo) { 
     // TODO Auto-generated method stub 
     super.onCreateContextMenu(menu, v, menuInfo); 
     if (v.getId() == R.id.lstContact) { 
      menu.setHeaderIcon(R.drawable.message); 
      menu.setHeaderTitle("Contacts"); 
      menu.add(0, 1, Menu.NONE, "Edit Contact"); 
      menu.add(0, 2, Menu.NONE, "Delete Contact"); 
      menu.add(0, 3, Menu.NONE, "Cancel"); 
     } 

    } 
    @Override 
    public boolean onContextItemSelected(MenuItem item) { 
     // TODO Auto-generated method stub 
     AdapterView.AdapterContextMenuInfo menuInfo;//you can select on context item selected 
     menuInfo = (AdapterContextMenuInfo) item.getMenuInfo(); 
     itemIndex = menuInfo.position;//you will get position of selected item 
     final Contact con = contacts.get(itemIndex); 

     switch (item.getItemId()) { 
     case 1: 

      Intent editIntent = new Intent(DataDemo.this, UpdateContact.class); 
      editIntent.putExtra(TAG_ID, con.getID()); 
      editIntent.putExtra(TAG_NAME, con.getName()); 
      editIntent.putExtra(TAG_PHNO, con.getPhNo()); 
      startActivity(editIntent); 
      break; 
     case 2: 
      new AlertDialog.Builder(this) 
        .setIcon(R.drawable.document_delete) 
        .setTitle("Confirm Delete") 
        .setMessage("Are you sure?") 
        .setPositiveButton("Yes", 
          new DialogInterface.OnClickListener() { 

           public void onClick(DialogInterface dialog, 
             int which) { 
            // TODO Auto-generated method stub 
            DatabaseHandler db = new DatabaseHandler(
              DataDemo.this); 
            db.DeleteContact(con); 
            Toast.makeText(DataDemo.this, con.getName() + " Deleted", 
              Toast.LENGTH_SHORT).show(); 
            fillList(); 
           } 
          }).setNegativeButton("No", null).show(); 

      break; 
     default: 
      break; 
     } 
     return super.onContextItemSelected(item); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     MenuItem addNew = menu.add(0, 1, 0, "Create Contact"); 

     addNew.setOnMenuItemClickListener(new OnMenuItemClickListener() { 

      public boolean onMenuItemClick(MenuItem item) { 
       // TODO Auto-generated method stub 
       Intent iCreate = new Intent(DataDemo.this, CreateContact.class); 
       startActivity(iCreate); 
       return true; 
      } 
     }); 
     return true; 
    } 

    protected void fillList() { 
     DatabaseHandler db = new DatabaseHandler(this); 
     ListAdapter adap; 
     ContactList.clear(); 
     contacts = db.ReadAllContact(); 

     for (Contact cn : contacts) { 
      HashMap<String, String> hmap = new HashMap<String, String>(); 
      hmap.put(TAG_NAME, cn.getName()); 
      hmap.put(TAG_PHNO, cn.getPhNo()); 
      ContactList.add(hmap); 
      adap = new SimpleAdapter(this, ContactList, 
        R.layout.list_item_view, 
        new String[] { TAG_NAME, TAG_PHNO }, new int[] { 
          R.id.lstName, R.id.lstPhNo }); 


      lst.setAdapter(adap); 
      registerForContextMenu(lst); 
     } 
    } 


    @Override 
    protected void onResume() { 
     // TODO Auto-generated method stub 
     super.onResume(); 
     fillList(); 
    } 

} 
관련 문제