2016-06-04 3 views
0

Как удалить элемент из ListView с помощью onCreateContextMenu? В приведенном ниже коде есть некоторые проблемы. Любое решение?Удалить элемент из ListView с помощью onCreateContextMenu

Когда элемент в списке давно нажат, появляются всплывающие окна меню, в которых есть возможность удалить.

public class ContextMenuTest extends AppCompatActivity { 

    ListView listView; 
    String []name={"ANKUSH", "ANOUSHKA", "SHIVA", "SOMANSHU"}; 
    String current; 
    ArrayAdapter<String> adapter; 
    int pos; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_context_menu_test); 

     listView = (ListView) findViewById(R.id.lvContextMenu); 
     adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, name); 

     listView.setAdapter(adapter); 
     registerForContextMenu(listView); 
    } 


    @Override 
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { 
     super.onCreateContextMenu(menu, v, menuInfo); 

     menu.setHeaderTitle("SELECT OPTION"); 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.menu_test, menu); 
    } 

    @Override 
    public boolean onContextItemSelected(MenuItem item) { 
     AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); 
     switch (item.getItemId()) 
     { 
      case R.id.delete: 
       adapter.remove(adapter.getItem(info.position)); 
       break; 
     } 
     return true; 
    } 

} 
+0

Какая проблема у ¨R обращенную? Может у PLS описать это .. !! – prat

ответ

0

В методе onContextItemSelected, добавьте adapter.notifyDataSetChanged() уведомить адаптер изменений в данных.

public boolean onContextItemSelected(MenuItem item) { 
    AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); 
    switch (item.getItemId()) 
    { 
     case R.id.delete: 
      adapter.remove(adapter.getItem(info.position)); 
      adapter.notifyDataSetChanged(); 
      break; 
    } 
    return true; 
} 
0

Для удаления элемента из ListView с помощью onCreateContextMenu вы можете сделать так:

int currentposition; 

listview.setOnCreateContextMenuListener(new OnCreateContextMenuListener() { 

    @Override 
    public void onCreateContextMenu(ContextMenu menu, View v, 
      ContextMenuInfo menuInfo) { 
     // TODO Auto-generated method stub 
     AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo; 
     currentposition = info.position; 
     menu.setHeaderTitle("SELECT OPTION"); 
     menu.add(0, v.getId(), 0, "Delete "); 

    } 

}); 

Тогда:

public boolean onContextItemSelected(MenuItem item) { 
    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item 
      .getMenuInfo(); 
    if (item.getTitle() == "Delete ") { 
     mArray.remove(currentposition); 
     ca.notifyDataSetChanged(); 
     Toast.makeText(this, "Deleted ", Toast.LENGTH_SHORT) 
       .show(); 
    } 
    return true; 
} 
0

Это Работает

public class ContextMenuTest extends AppCompatActivity { 

ListView listView; 
List<String> list = new ArrayList<String>(); 
ArrayAdapter<String> adapter; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_context_menu_test); 

    listView = (ListView) findViewById(R.id.lvContextMenu); 

    list.add("ANKUSH"); 
    list.add("ANOUSHKA"); 
    list.add("SHIVA"); 
    list.add("SOMANSHU"); 

    adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list); 

    listView.setAdapter(adapter); 
    registerForContextMenu(listView); 
} 


@Override 
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { 
    super.onCreateContextMenu(menu, v, menuInfo); 

    menu.setHeaderTitle("SELECT OPTION"); 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.menu_test, menu); 
} 

@Override 
public boolean onContextItemSelected(MenuItem item) { 

    AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); 

    switch (item.getItemId()) 
    { 
     case R.id.delete: 
      list.remove(info.position); 
      adapter.notifyDataSetChanged(); 
      return true; 

     default: 
      return super.onContextItemSelected(item); 
    } 
} 
} 
Смежные вопросы