2014-02-11 7 views
0

Я пытаюсь имитировать поведение приложения twitter. Когда вы долго нажимаете элемент (твит), на этом элементе списка отображаются четыре кнопки. Любую из этих кнопок можно нажать, чтобы вывести пользователя на другой экран.Как показать кнопки в элементе списка при длинном нажатии

Кроме того, у меня есть список, как это:

lv.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> arg0, View view, int arg2,long arg3) { 
     startActivityWhenListItemClicked(view); 
    } 
}); 

Приведенный выше код работает, когда элемент списка щелкают.

Как я могу реализовать long-press и показать несколько кнопок в элементе списка? Я был бы признателен за любой учебник или пример.

ответ

1

Точно так же, как onClickListener(), но с onLongClickListener() внедрениями onLongClick(). Я бы регистрируя каждую строку для контекстного меню, таким образом:

context.registerForContextMenu(yourView); 

А потом просто реализовать контекстуальные функции меню overridings.

@Override 
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { 
    menu.setHeaderTitle("My twitter menu"); 
    menu.add(Menu.NONE, 0, 0, "Remove"); 
} 

@Override 
public boolean onContextItemSelected(MenuItem item) { 
    final int mId = item.getItemId(); 

    switch (mId) { 
    case 0: 
     ...   
     break; 

    default: 
     break; 
    } 

    return true; 
} 
+0

Спасибо, я получил это для работы. Однако, когда я долгое время нажимаю на элемент списка, контекстное меню появляется и переходит на экран. Однако в приложении twitter элемент списка сам изменяется и показывает действия, которые могут быть предприняты в твите. – Anthony

+0

Тогда вы не должны использовать контекстное меню для этого. Вместо этого я бы начал для этого новую «Активность», но база такая же. Вместо того, чтобы регистрировать элемент для контекстного меню, создайте «Intent», поместите в него некоторый идентификатор, чтобы определить строку, на которой вы планируете совершить какое-либо действие, а затем используйте '.startActivity (намерение)' (возможно, даже '.startActivityForResult (intent, actionId) ', как вы хотите обработать результат). – nKn

+0

Хмм. Я не понимаю, как это сделать. Я хотел бы показать образ, которого я пытаюсь достичь, но я не могу установить твиттер на эмуляторе – Anthony

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