2015-06-04 1 views
0

У меня есть listView в моем проекте есть ActionMode, который отображается как клик по каждому элементу listView.Как использовать ActionMode с методом «setOnItemClickListener» в ListView-Android?

я сделать что-то вроде этого:

public class MyActivity extends Activity { 
... 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
... 
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 
      public boolean onCreateActionMode(final ActionMode mode, Menu menu) { 
       mode.setTitle("TITLE"); 
       getMenuInflater().inflate(R.menu.menu, menu); 
       return true; 
      } 

      @Override 
      public boolean onPrepareActionMode(ActionMode mode, Menu menu) { 
       return true; 
      } 

      @Override 
      public boolean onActionItemClicked(final ActionMode mode, MenuItem item) { 
       switch (item.getItemId()) { 
        ...buttons like this 
        case R.id.doneBTN: 


         break; 
       } 
       return true; 
      } 

     } 
    }); 

} 

Есть проблемы в RETURNs.this отметить шоу для каждого ВОЗВРАЩАЕТСЯ «не может возвратить значение из метода с ничтожным типом возвращаемым значением» ... так как я могу реши это?

+0

как я пишу выше, я хочу га ve ActionMode, когда я нажимаю на элементы ListView. –

ответ

0

Кажется, вы немного перепутали слушателей.

AdapterView.OnItemClickListener имеет только один способ, а именно onItemClick(). Посмотрите HERE для получения дополнительной информации о том

Для запуска ActionMode вы можете использовать

activity.startActionMode(new MyActionModeListener()) 

Ваш слушатель может быть что-то вроде этого:

private class MyActionModeListener implements ActionMode.Callback { 

    @Override 
    public boolean onCreateActionMode(ActionMode mode, Menu menu) { 
     MenuInflater inflater = MyActivity.this.getSupportMenuInflater(); 
     inflater.inflate(R.menu.my_activity_action_mode, menu); 
     return true; 
    } 

    @Override 
    public boolean onPrepareActionMode(ActionMode mode, Menu menu) { 
     return false; 
    } 

    @Override 
    public boolean onActionItemClicked(ActionMode mode, MenuItem item) { 

     switch (item.getItemId()) { 
      // handle clicks here 
     } 

     mode.finish(); 
     return true; 
    } 

    @Override 
    public void onDestroyActionMode(ActionMode mode) {} 
} 

Чтобы действительно начать ActionMode основанный на щелкните элемент списка, используйте что-то вроде

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 
     MyActivity.this.startActionMode(new MyActionModeListener()); 
    } 
} 
+0

Спасибо! У меня есть 2 вопроса: 1 - в этой строке есть ошибка: «Надувной элемент MenuInflater = MyActivity.this.getSupportMenuInflater();» : PACKAGE.MyActivity не является закрывающим классом --- 2-как передать «i» из метода onItemClick в MyActivity в MyActionModeListener.class? –

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

  • Нет связанных вопросов^_^