ExpandableListView OnLongClick не распознается слушателем

Я пробовал несколько разных комбинаций (комментарии ниже являются фрагментами). Отладка не распознает щелчок как когда-либо происходящий. Элемент подсвечивается, но ничего не происходит. Я попытался раздуть собственный файл row.xml и использовать представления внутри файла макета строки. Никаких исключений, никаких идей. Спасибо, что искали.

Кроме того, я понимаю, что метод onCreateContextMenu немного прост. Я просто хочу, чтобы эта вещь всплывала, а потом я позабочусь о деталях!

Основная деятельность

public class BrowseActivity extends ExpandableListActivity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.browse);

    final ExpandableListView browseView = (ExpandableListView) findViewById(android.R.id.list);

    DbHelper dbh = new DbHelper(BrowseActivity.this);
    SQLiteDatabase db = dbh.getWritableDatabase();
    SQLiteQueryBuilder queryBuilder = new SQLiteQueryBuilder();
    queryBuilder.setTables(Items.ITEMS_TABLE_NAME);

    Cursor mCursor = queryBuilder.query(db, new String[] { Items.ITEMS_ID,
            Items.ITEMS_ITEM, Items.ITEMS_DESC }, null, null, null, null,
            Items.DEFAULT_SORT_ORDER);

    CursorTreeAdapter mAdapter = new MyExpandabaleListAdapter(this,
            mCursor, R.layout.row, R.layout.exprow, new String[] {
                    Items.ITEMS_ITEM, Items.ITEMS_DESC }, new int[] {
                    R.id.txtItem, R.id.dscItemTwo }, new String[] {
                    Items.ITEMS_DESC, Items.ITEMS_MANU }, new int[] {
                    R.id.dscItem, R.id.manuItem });

    browseView.setAdapter(mAdapter);


        registerForContextMenu(getExpandableListView());

}

public class MyExpandabaleListAdapter extends SimpleCursorTreeAdapter {

    public MyExpandabaleListAdapter(Context context, Cursor c,
            int groupLayout, int childLayout, String[] groupFrom,
            int[] groupTo, String[] childrenFrom, int[] childrenTo) {

        super(context, c, groupLayout, groupFrom, groupTo, childLayout,
                childrenFrom, childrenTo);

    }

    @Override
    protected Cursor getChildrenCursor(Cursor groupCursor) {...}

}

public void OnCreateContextMenu(ContextMenu menu, View v,
        ContextMenuInfo menuInfo) {

    super.onCreateContextMenu(menu, v, menuInfo);

     menu.add(0, 0, 0, "Add");

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu);
    menu.add("Add Item").setIntent(new Intent(this, AddItemActivity.class));

    return super.onCreateOptionsMenu(menu);
}

@Override
public boolean onContextItemSelected(MenuItem item) {

    return false;
}

}

макет просмотра Это макет трюмов ELV.

<LinearLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent" android:orientation="vertical"
 android:id="@+id/expandLinLayout"
 >
 <ExpandableListView 
 android:id = "@android:id/list" 
 android:layout_height="fill_parent" 
 android:layout_width="fill_parent"
 android:groupIndicator="@drawable/my_group_statelist"  
 >  
 </ExpandableListView>

</LinearLayout>

макет строки Это свернутый макет.

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/TableLayout1" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"
>
<TextView 
android:layout_gravity="center_vertical|right" 
android:id="@+id/txtItem" 
android:text="Item" 
android:layout_height="wrap_content" 
android:layout_width="fill_parent" 
android:textSize="15dip"

></TextView>


 <TextView 
android:layout_gravity="center_vertical|right" 
android:id="@+id/dscItemTwo" 
android:text="Desciption" 
android:layout_height="wrap_content" 
android:layout_width="fill_parent" 
android:textStyle="italic"
android:textColor="#666666"

></TextView>

exprow layout This is the expanded layout.

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"

>
<TextView 
android:layout_gravity="right" 
android:layout_height="wrap_content" 
android:layout_width="wrap_content" 
android:id="@+id/manuItem" 
android:textColor="#994020" 
android:text="Manufacturer"
android:layout_marginRight="10dip"
></TextView>

<TextView 
android:text="Description"
android:id = "@+id/dscItem"
android:layout_width = "wrap_content" 
android:layout_height="wrap_content"
android:layout_gravity="right"
android:layout_marginRight="10dip"
 android:textColor="#994020" 
></TextView>

</LinearLayout>

person atomSmasher    schedule 09.07.2011    source источник
comment
я тупой, но где метод долгого щелчка?   -  person Blundell    schedule 09.07.2011
comment
Я сомневаюсь, что вы ведете себя глупо, это у меня инвалидность 26. Я предполагал, что это было включено в registerForContextMenu (), я думаю, что где-то читал ... ?? ..   -  person atomSmasher    schedule 09.07.2011
comment
Ах да, почему вы закомментировали регистрацию контекста в своем списке, а теперь вместо этого увеличиваете какое-то другое представление? Думаю, это твоя ошибка.   -  person Blundell    schedule 09.07.2011
comment
Это я пробовал два разных варианта. Я не люблю удалять идеи, пока не знаю, что они не работают! Если я его раскомментирую, он все равно будет делать то же самое.   -  person atomSmasher    schedule 09.07.2011


Ответы (1)


Справочная информация

В вашем registerForContextMenu ( ) необязательно передавать в заявленном списке:

 registerForContextMenu(getListView());

http://getListView%20API

или в вашем случае:

http://www.androidjavadoc.com/1.0_r1_src/android/app/ExpandableListActivity.html#getExpandableListView%28%29

Ссылка на StackOvflow: Как реализовать контекстное меню в ListActivity на Android?

person Blundell    schedule 09.07.2011
comment
Для меня это не сработает. Через 9 часов я сдался и использовал setOnCreateContextMenuListener () вместо registerForContextMenu () и onCreateContextMenu (). Сейчас работает нормально, не знаю почему, но работает. - person atomSmasher; 10.07.2011