Я работаю над проектом Android и использую ExpandableListView с Custom ExpandableListAdapter.
У меня есть OnItemLongClickListener, обработчик кликов следует использовать только при длительном нажатии заголовка группы, любые длительные щелчки по дочерним элементам следует игнорировать.
Когда все заголовки групп свернуты, код работает нормально, когда любая группа расширяется, даже та, на которую я не долго нажимаю, вызывает исключение.
Трассировка стека выглядит следующим образом:
7452-7452/com.BoardiesITSolutions.MysqlManager E/AndroidRuntime﹕ НЕИСПРАВНОЕ ИСКЛЮЧЕНИЕ: main 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(собственный метод) в java.lang.reflect.Method.invoke(Method.java:525) в com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(Zygo teInit.java:737) в com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) в dalvik.system.NativeStart.main(собственный метод)
Ниже мой код
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;
}
});
}
Спасибо за любую помощь, которую вы можете предоставить.