2016-06-04 13 views
0

Wie löscht Element aus ListView mit onCreateContextMenu? Im folgenden Code ist ein Problem aufgetreten. Irgendeine Lösungsmöglichkeit?Löschen von Element aus ListView mit onCreateContextMenu

Wenn das Element in der Listenansicht lang gedrückt wird, erscheint ein Menü mit Popups, in dem eine Option zum Löschen vorhanden ist.

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

Welches Problem u gegenüber r? Kannst du es beschreiben .. !! – prat

Antwort

0

Im onContextItemSelected Verfahren fügen adapter.notifyDataSetChanged() den Adapter von Änderungen an den Daten zu benachrichtigen.

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

Für Artikel aus Listview Löschen mit onCreateContextMenu Sie wie folgt tun:

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 "); 

    } 

}); 

Dann:

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

This Works

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); 
    } 
} 
} 
Verwandte Themen