2014-03-14 2 views
0

의 중첩 클래스 인 경우 클래스를 팽창 I가 또 다른 expandablelist를 포함하는 하나의 아이를 포함하는 각각의 여러 그룹과 expandablelist 단일 어린이를 포함, 각각의 여러 그룹을 포함하는 expandablelist. ................. 그리고 수준을 내려라.오류 사용자 정의 클래스는 MainActivity

03-17 23:37:30.508 1751-1751/com.multilevellist E/AndroidRuntime﹕ FATAL EXCEPTION: main 
Process: com.multilevellist, PID: 1751 
java.lang.ClassCastException: android.widget.RelativeLayout$LayoutParams 
           cannot be cast to android.widget.AbsListView$LayoutParams 
     at android.widget.ListView.setupChild(ListView.java:1826) 
     at android.widget.ListView.makeAndAddView(ListView.java:1793) 
     at android.widget.ListView.fillDown(ListView.java:691) 
     at android.widget.ListView.fillSpecific(ListView.java:1349) 
     at android.widget.ListView.layoutChildren(ListView.java:1608) 
     at android.widget.AbsListView.onLayout(AbsListView.java:2091) 
     at android.view.View.layout(View.java:14817) 
     at android.view.ViewGroup.layout(ViewGroup.java:4631) 
     at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1055) 
     at android.view.View.layout(View.java:14817) 
     at android.view.ViewGroup.layout(ViewGroup.java:4631) 
     at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453) 
     at android.widget.FrameLayout.onLayout(FrameLayout.java:388) 
     at android.view.View.layout(View.java:14817) 
     at android.view.ViewGroup.layout(ViewGroup.java:4631) 
     at com.android.internal.widget.ActionBarOverlayLayout.onLayout(
             ActionBarOverlayLayout.java:374) 
     at android.view.View.layout(View.java:14817) 
     at android.view.ViewGroup.layout(ViewGroup.java:4631) 
     at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453) 
     at android.widget.FrameLayout.onLayout(FrameLayout.java:388) 
     at android.view.View.layout(View.java:14817) 
     at android.view.ViewGroup.layout(ViewGroup.java:4631) 
     at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:1987) 
     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1744) 
     at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1000) 
     at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5670) 
     at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761) 
     at android.view.Choreographer.doCallbacks(Choreographer.java:574) 
     at android.view.Choreographer.doFrame(Choreographer.java:544) 
     at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747) 
     at android.os.Handler.handleCallback(Handler.java:733) 
     at android.os.Handler.dispatchMessage(Handler.java:95) 
     at android.os.Looper.loop(Looper.java:136) 
     at android.app.ActivityThread.main(ActivityThread.java:5017) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:515) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
     at dalvik.system.NativeStart.main(Native Method) 

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.multilevellist.MainActivity"> 


    <ExpandableListView 
     android:id="@+id/TopLevelList" 
     android:layout_width="match_parent" 
     android:layout_height="fill_parent" 
     android:background="#caa551" 
     android:choiceMode="singleChoice" 
     android:groupIndicator="@null" 
     android:scrollbars="vertical"></ExpandableListView> 

    <com.multilevellist.MainActivity.NextLevelListView 
     android:id="@+id/NextLevelList" 
     android:layout_width="match_parent" 
     android:layout_height="fill_parent" 
     android:background="#41ca7e" 
     android:choiceMode="singleChoice" 
     android:groupIndicator="@null" 
     android:scrollbars="vertical"></com.multilevellist.MainActivity.NextLevelListView> 


</RelativeLayout>  

all_levels_text.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    tools:context="com.newShop.MainActivity" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    android:padding="0dp" 
    android:id="@+id/all_levels_text"> 

<TextView 
    android:id="@+id/TextItem" 
    android:textColor="#000000" 
    android:textSize="15sp" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 
</TextView> 

</LinearLayout> 

MainActivity.java

XML에서 39,513,210

NextLevelListView.java

package com.multilevellist; 

import android.content.Context; 
import android.util.AttributeSet; 
import android.widget.ExpandableListView; 

import static android.util.Log.w; 

public class NextLevelListView extends ExpandableListView { 

    private int level = 0; 

    public NextLevelListView(Context context) { 
     super(context); 
    } 

    public NextLevelListView(Context context, AttributeSet attributeSet) { 
     super(context, attributeSet); 
    } 

    @Override 
    public void onMeasure(int width, int height) { 
     w("*****", "onMeasure 1 "); 


     height = MeasureSpec.makeMeasureSpec(1500, MeasureSpec.AT_MOST); 
     w("*****", "onMeasure 2 "); 
     super.onMeasure(width, height); 


     w("*****", "onMeasure 3 "); 
    } 

    public void setLevel(int level) { 
     this.level = level; 
    } 
} 
+1

시도'<뷰 클래스 = "com.multilevellist.MainActivity $ NextLevelListView"...'. – Luksprog

답변

0

사용 com.multilevellist.MainActivity$NextLevelListView 대신 com.multilevellist.MainActivity.NextLevelListView. XML 인플레이션은 자바 리플렉션을 사용하여 클래스를 찾습니다. 자바를 반영, $는 부모로부터 중첩 클래스를 구분합니다.

+0

Topdown

+0

@Luksprog 및 laalto, 당신의 아이디어 덕분에, 그들은 안드로이드 스튜디오는 $ 기호를 처리하지 않습니다 dicover 저를지도한다. 내포 된 클래스 인 NextLevelListView를 자신의 것으로 이동했습니다. 이것은 즉각적인 문제를 해결 한 것으로 보이지만 새로운 문제를 강조했습니다. 질문을 편집하고 새 코드와 logcat을 포함 시켰습니다. – Topdown

관련 문제