2017-02-07 13 views
1

Я хотел бы послать файл переменные из bookListView LongClickListener к высказываниям коммутатора из кода QuickAction. Как мне это сделать?Отправка аргумент другого метод

код BookListView:

bookListView.setOnItemLongClickListener(
    new AdapterView.OnItemLongClickListener() { 
     @Override 
     public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { 
      String book = String.valueOf(parent.getItemAtPosition(position)); 
      File file = new File (path + "/" + book); 
      mQuickAction.show(view); 
      return true; 
     } 
    } 
); 

QuickAction код:

ActionItem editItem = new ActionItem(ID_EDIT, "Edit", getResources().getDrawable(R.drawable.edit_icon)); 
ActionItem deleteItem = new ActionItem(ID_DELETE, "Delete", getResources().getDrawable(R.drawable.delete_icon)); 

final QuickAction mQuickAction = new QuickAction(this); 
mQuickAction.addActionItem(editItem); 
mQuickAction.addActionItem(deleteItem); 

mQuickAction.setOnActionItemClickListener(new QuickAction.OnActionItemClickListener() { 
    @Override 
    public void onItemClick(QuickAction quickAction, int pos, int actionId) { 
     ActionItem actionItem = quickAction.getActionItem(pos); 

     switch (actionId) { 
      case ID_EDIT: 
       Toast.makeText(MainActivity.this, "go", Toast.LENGTH_SHORT).show(); 
       break; 
      case ID_DELETE: 
       Toast.makeText(MainActivity.this, "Delete book", Toast.LENGTH_SHORT).show(); 
       break; 
      } 
     } 
    }); 

    mQuickAction.setOnDismissListener(new QuickAction.OnDismissListener() { 
     @Override 
     public void onDismiss() { 
      //close quickaction 
     } 
    }); 

    ... 
}); 

ответ

1

Вы можете использовать объект, который отвечает за управление файла, например:

public class FileManager { 

    private File file; 

    public void setFile(File file) { 
     this.file = file; 
    } 

    public File getFile() { 
     return this.file; 
    } 
} 

FileManager мог между способами:

FileManager fileManager = new FileManager(); 

bookListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { 
    @Override 
    public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { 
     String book = String.valueOf(parent.getItemAtPosition(position)); 
     File file = new File (path + "/" + book); 
     fileManager.setFile(file); 
     mQuickAction.show(view); 
     return true; 
    } 
}); 

и чем вы могли бы вызвать метод GET:

mQuickAction.setOnActionItemClickListener(new QuickAction.OnActionItemClickListener() { 
    @Override 
    public void onItemClick(QuickAction quickAction, int pos, int actionId) { 
     ActionItem actionItem = quickAction.getActionItem(pos); 
     File file = fileManager.getFile(); 

     switch (actionId) { 
      case ID_EDIT: 
       Toast.makeText(MainActivity.this, "go", Toast.LENGTH_SHORT).show(); 
       break; 
      case ID_DELETE: 
       Toast.makeText(MainActivity.this, "Delete book", Toast.LENGTH_SHORT).show(); 
       break; 
      } 
     } 
    }); 

    ... 
});