2013-08-21 2 views
1

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

Ниже приведен код, который я имею в настоящее время для плавающего контекстного меню. Я следил за документацией, которая помогла мне настроить ее, а затем попыталась найти аналогичный пример того, что я делаю, но не смогла найти ничего подходящего.

@Override 
    public void onCreateContextMenu(ContextMenu menu, View v, 
            ContextMenu.ContextMenuInfo menuInfo) { 
     super.onCreateContextMenu(menu, v, menuInfo); 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.payments_context, menu); 
    } 

    @Override 
    public boolean onContextItemSelected(MenuItem item) { 
     AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); 
     switch (item.getItemId()) { 
      case R.id.edit: 

       return true; 
      case R.id.delete: 

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

Это код, который я должен был удалить пункты в моей ListView, прежде чем я решил перейти в контекстном меню плавающего

public boolean onItemLongClick (AdapterView<?> parent, View view, int position, long id) 
     { 
      String temp = paymentTitle.get(position).toString(); 
      paymentTitle.remove(position); 
      paymentDate.remove(position); 
      reminderDate.remove(position); 
      reminderTime.remove(position); 
      paymentVal.remove(position); 

      mDatabase = new MOSDatabase(this); 

      SQLiteDatabase readableDB = mDatabase.getWritableDatabase(); 
      readableDB.delete("PaymentTable", "PTITLE=?", 
        new String[]{temp}); 

      aa.notifyDataSetChanged(); 

      return false; 
     } 

Если кто-то может сообщить мне о том, как получить это контекстное меню с плавающим я был бы очень благодарен. У меня еще нет метода редактирования, это то, что мне нужно сделать после того, как я завершу это.

+0

ищет это http://stackoverflow.com/questions/17698596/checkable-relative-layout-as-item-in-multiselect-list/17698673#17698673? – Raghunandan

ответ

5

Если я правильно понимаю, вы можете получить индекс элемента в ListView в положении мыши, используя следующий код:

AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo; 
int position = info.position; 

Использование position, вы можете использовать код onItemLongClick довольно много, как является:

@Override 
public boolean onContextItemSelected(MenuItem item) { 
    AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); 
    int position = info.position; 
    switch (item.getItemId()) { 
     case R.id.edit: 

      return true; 
     case R.id.delete: { 
      String temp = paymentTitle.get(position).toString(); 
      paymentTitle.remove(position); 
      paymentDate.remove(position); 
      reminderDate.remove(position); 
      reminderTime.remove(position); 
      paymentVal.remove(position); 

      mDatabase = new MOSDatabase(this); 

      SQLiteDatabase readableDB = mDatabase.getWritableDatabase(); 
      readableDB.delete("PaymentTable", "PTITLE=?", 
        new String[]{temp}); 

      aa.notifyDataSetChanged(); 
      } 
      return true; 
     default: 
      return super.onContextItemSelected(item); 
    } 
} 

Вы можете посмотреть на ответ на вопрос this.

+0

Работал отлично. Спасибо за вашу помощь! –

+0

'item.getMenuInfo()' возвращает значение null .. Вы можете помочь? –

+0

У меня это работает наконец, я использовал пользовательский GridView, в котором метод getContextMenuInfo() не был реализован. Я разместил [здесь] (http://vinaybhargav.wordpress.com/2014/07/20/android-floating-context-menu-for-listviewgridview/) в случае, если кому-то нужен образец. –

Смежные вопросы