【发布时间】:2014-05-11 11:11:07
【问题描述】:
我正在开发一个 android 项目并使用带有自定义 ExpandableListAdapter 的 ExpandableListView。
我有一个 OnItemLongClickListener,单击处理程序仅应在长按组标题时使用,应忽略对子项的任何长单击。
当所有组标题都折叠时,代码工作正常,当任何组展开时,即使我没有长时间点击,也会导致抛出异常。
堆栈跟踪如下:
7452-7452/com.BoardiesITSolutions.MysqlManager E/AndroidRuntime:致命 例外:主要 java.lang.ClassCastException:java.lang.String 无法转换为 com.BoardiesITSolutions.MysqlManager.DatabaseDetails 在 com.BoardiesITSolutions.MysqlManager.ConnectedDBManagerHost$1.onItemLongClick(ConnectedDBManagerHost.java:142) 在 android.widget.AbsListView.performLongPress(AbsListView.java:2854) 在 android.widget.AbsListView$CheckForLongPress.run(AbsListView.java:2804) 在 android.os.Handler.handleCallback(Handler.java:730) 在 android.os.Handler.dispatchMessage(Handler.java:92) 在 android.os.Looper.loop(Looper.java:137) 在 android.app.ActivityThread.main(ActivityThread.java:5103) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:525) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 在 dalvik.system.NativeStart.main(Native Method)
下面是我的代码
mDrawerDBs.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
if (ExpandableListView.getPackedPositionType(id) == ExpandableListView.PACKED_POSITION_TYPE_GROUP)
{
for (int i = 0; i < listAdapter.getGroupCount(); i++)
{
((DatabaseDetails)parent.getItemAtPosition(i)).setIsDefaultDatabase(false);
}
DatabaseDetails dbDetails = (DatabaseDetails)parent.getItemAtPosition(position);
((DatabaseDetails) parent.getItemAtPosition(position)).setIsDefaultDatabase(true);
ConnectionsManager.connectedDatabase.put("database", Encryption.encrypt(((DatabaseDetails) parent.getItemAtPosition(position)).getDatabaseName()));
QueryEditor queryFragment = (QueryEditor)getSupportFragmentManager().findFragmentById(R.id.fragment_queryEditor);
queryFragment.setDatabaseUsed();
listAdapter.notifyDataSetChanged();
}
return true;
}
});
}
感谢您提供的任何帮助。
【问题讨论】:
标签: android expandablelistview expandablelistadapter