2013-09-24 4 views
0

я установки контекстное меню появляться на короткое нажатие, что я нажимаю на элемент в ListViewПроблема с Контекстное меню

public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { 
    menu.setHeaderTitle("Pick an action"); 
    theView = v; 
    TextView desc = (TextView) theView.findViewById(R.id.class_description); 
    String description = (String) desc.getText(); 
    TextView id = (TextView) v.findViewById(R.id.class_id); 
    Integer ID = Integer.valueOf(String.valueOf(id.getText())); 
    menu.add(1, ID, 0, getString(R.string.add_to_calender)); 
    menu.add(2, ID, 0, getString(R.string.subscribe_alterations)); 
    assert description != null; 
    if (!description.equals("")) { 
     menu.add(3, ID, 0, getString(R.string.view_description)); 
    } 
    menu.add(4, ID, 0, getString(R.string.view_alterations)); 
} 

mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 

     Toast.makeText(getSherlockActivity(), "Clicked", Toast.LENGTH_SHORT).show(); 
     registerForContextMenu(view); 
     view.setLongClickable(false); 
     getSherlockActivity().openContextMenu(view); 
    } 
}); 

В моем списке следует адаптер, я получил эту линию, что переключает видимость кнопка

holder.alter.setVisibility(View.VISIBLE); 
if ((position % 2) == 0) { 
    holder.alter.setVisibility(View.INVISIBLE); 
} 

Вот кнопка

<Button 
    android:layout_width="20dp" 
    android:layout_height="wrap_content" 

    android:background="@drawable/alterations_btn" 
    android:textColor="@color/white" 
    android:layout_alignParentLeft="true" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:textStyle="bold" 
    android:layout_marginRight="@dimen/padding_small" 

    android:id="@+id/is_alt" 
    android:layout_centerInParent="true" 
    android:text="@string/exclamation_point"/> 

когда кнопка невидима контекстное меню работает, но когда это v это невозможно.

Может ли кто-нибудь понять, почему?

ответ

1

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

Что вы можете сделать, установите для атрибута focusable значение false для кнопки, которая у вас есть в вашем ListView, и посмотрите, помогает ли это.

+0

Perfect :). Спасибо за вашу помощь. –

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