监听器无法识别 ExpandableListView OnLongClick
Posted
技术标签:
【中文标题】监听器无法识别 ExpandableListView OnLongClick【英文标题】:ExpandableListView OnLongClick not recognized by listener 【发布时间】:2011-10-01 23:04:22 【问题描述】:我尝试了几种不同的组合(下面的 cmets 是其中的片段)。调试不会像以往一样识别点击。该项目突出显示,但没有任何反应。我已经尝试扩展自定义 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_
android:layout_ android:orientation="vertical"
android:id="@+id/expandLinLayout"
>
<ExpandableListView
android:id = "@android:id/list"
android:layout_
android:layout_
android:groupIndicator="@drawable/my_group_statelist"
>
</ExpandableListView>
</LinearLayout>
行布局 这是折叠布局。
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/TableLayout1"
android:layout_
android:layout_
>
<TextView
android:layout_gravity="center_vertical|right"
android:id="@+id/txtItem"
android:text="Item"
android:layout_
android:layout_
android:textSize="15dip"
></TextView>
<TextView
android:layout_gravity="center_vertical|right"
android:id="@+id/dscItemTwo"
android:text="Desciption"
android:layout_
android:layout_
android:textStyle="italic"
android:textColor="#666666"
></TextView>
展开布局 这是展开的布局。
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_
android:layout_
>
<TextView
android:layout_gravity="right"
android:layout_
android:layout_
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_
android:layout_gravity="right"
android:layout_marginRight="10dip"
android:textColor="#994020"
></TextView>
</LinearLayout>
【问题讨论】:
我是不是傻了,长按的方法呢? 我怀疑你是笨蛋,我是一个差点为 26 的人。我假设它包含在 registerForContextMenu() 中,我想我在某处读到过…… ??.. 啊,是的,为什么您将上下文注册到您的列表中注释掉,而现在却夸大了其他视图?我认为这是你的错误。 那是我尝试两种不同的选择。我不喜欢删除想法,直到我知道它们不起作用!如果我取消注释它,它仍然会做同样的事情。 【参考方案1】:Background reading
在你的registerForContextMenu()中你不必传入声明的列表:
registerForContextMenu(getListView());
http://developer.android.com/reference/android/app/ListActivity.html#getListView()
或者在你的情况下:
http://www.androidjavadoc.com/1.0_r1_src/android/app/ExpandableListActivity.html#getExpandableListView()
StackOvflow 参考:How do you implement context menu in a ListActivity on Android?
【讨论】:
这对我不起作用。 9 小时后,我放弃并使用 setOnCreateContextMenuListener() 代替了 registerForContextMenu() 和 onCreateContextMenu()。现在工作正常,不知道为什么,但它工作。以上是关于监听器无法识别 ExpandableListView OnLongClick的主要内容,如果未能解决你的问题,请参考以下文章
Oracle错误——ORA12514:监听程序当前无法识别连接描述符中请求的服务
ORA-12514:TNS:监听程序当前无法识别链接描述符中请求的服务
ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务(急)
ORA-12514: 监听程序当前无法识别连接描述符中请求的服务