0

Tjerk Wolternik에서 Slide ExpandableListAdapter을 구현 중이지만 사용중인 목록을 호출 할 때 ClassCastException이 발생합니다. 나는 왜 이것이 일어나고 있는지를 누군가가 알 수있게되기를 바라고 있습니다.Slide ExpandableListAdapter를 사용하는 ClassCastException

:

public class ResultsAdapter extends ArrayAdapter<String> { 

private final LayoutInflater layoutInflater; 

public ResultsAdapter(Context context, int textViewResourceId) { 
     super(context, textViewResourceId); 
     layoutInflater = LayoutInflater.from(context); 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent){ 

    if(convertView == null){    
     convertView = layoutInflater.inflate(R.layout.row, null); //must be overall layout 
    } 


    TextView venName = (TextView) convertView.findViewById(R.id.rowName); 
    TextView venAddress = (TextView) convertView.findViewById(R.id.rowAdd); 

    venName.setText(VenueList.getVenueName(position)); 
    venAddress.setText(VenueList.getVenueAddress(position)); 

    return convertView; 
} 

}

내가 함께 일하고 목록보기가 바로 여기 ListFragment의 확장입니다 : 여기와 같이

나는 사용자 정의 배열 어댑터를 사용하고

public class ListFragmentClickable extends ListFragment{ 

    private OnItemSelectedListener listener; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.activity_results, container, false); 
     return view; 
    } 

    @Override 
    public void onListItemClick(ListView l, View v, int position, long id) { 
     updateDetail(position); //see bottom 
    } 

    public interface OnItemSelectedListener { 
     public void onItemSelected(String name); 
    } 


    @Override 
    public void onAttach(Activity activity) { 
     super.onAttach(activity); 
     if (activity instanceof OnItemSelectedListener) { 
     listener = (OnItemSelectedListener) activity; 
     } else { 
     throw new ClassCastException(activity.toString() 
      + " must implement ListFragmentClickable.OnItemSelectedListener"); 
     } 
    } 

    public void updateDetail(int position) { 
     String name = VenueList.getVenueName(position); 
     listener.onItemSelected(name); 
    } 

}

는 로그 캣 라이브러리의이 부분을 가리키는 코드 (특히 final LinearLayout.LayoutParams params = (LinearLayout.LayoutParams)target.getLayoutParams();) : 여기

private void updateExpandable(View target, int position) { 

    final LinearLayout.LayoutParams params = (LinearLayout.LayoutParams)target.getLayoutParams(); 
    if(openItems.get(position)) { 
     target.setVisibility(View.VISIBLE); 
     params.bottomMargin = 0; 
    } else { 
     target.setVisibility(View.GONE); 
     params.bottomMargin = 0-viewHeights.get(position); 
    } 
} 

그리고 내 로그 캣입니다 :

07-31 23:42:20.931: E/AndroidRuntime(3557): FATAL EXCEPTION: main 
07-31 23:42:20.931: E/AndroidRuntime(3557): java.lang.ClassCastException: android.widget.RelativeLayout$LayoutParams 
07-31 23:42:20.931: E/AndroidRuntime(3557):  at com.tjerkw.slideexpandable.library.AbstractSlideExpandableListAdapter.updateExpandable(AbstractSlideExpandableListAdapter.java:222) 
07-31 23:42:20.931: E/AndroidRuntime(3557):  at com.tjerkw.slideexpandable.library.AbstractSlideExpandableListAdapter.enableFor(AbstractSlideExpandableListAdapter.java:159) 
07-31 23:42:20.931: E/AndroidRuntime(3557):  at com.tjerkw.slideexpandable.library.AbstractSlideExpandableListAdapter.enableFor(AbstractSlideExpandableListAdapter.java:142) 
07-31 23:42:20.931: E/AndroidRuntime(3557):  at com.tjerkw.slideexpandable.library.AbstractSlideExpandableListAdapter.getView(AbstractSlideExpandableListAdapter.java:64) 
07-31 23:42:20.931: E/AndroidRuntime(3557):  at android.widget.AbsListView.obtainView(AbsListView.java:1449) 
07-31 23:42:20.931: E/AndroidRuntime(3557):  at android.widget.ListView.onMeasure(ListView.java:1103) 
07-31 23:42:20.931: E/AndroidRuntime(3557):  at android.view.View.measure(View.java:8532) 
07-31 23:42:20.931: E/AndroidRuntime(3557):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3261) 
07-31 23:42:20.931: E/AndroidRuntime(3557):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:250) 
07-31 23:42:20.931: E/AndroidRuntime(3557):  at android.view.View.measure(View.java:8532) 
07-31 23:42:20.931: E/AndroidRuntime(3557):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3261) 
07-31 23:42:20.931: E/AndroidRuntime(3557):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:250) 
07-31 23:42:20.931: E/AndroidRuntime(3557):  at android.view.View.measure(View.java:8532) 
07-31 23:42:20.931: E/AndroidRuntime(3557):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3261) 
07-31 23:42:20.931: E/AndroidRuntime(3557):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:250) 
07-31 23:42:20.931: E/AndroidRuntime(3557):  at android.view.View.measure(View.java:8532) 
07-31 23:42:20.931: E/AndroidRuntime(3557):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3261) 
07-31 23:42:20.931: E/AndroidRuntime(3557):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:250) 
07-31 23:42:20.931: E/AndroidRuntime(3557):  at android.view.View.measure(View.java:8532) 
07-31 23:42:20.931: E/AndroidRuntime(3557):  at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:683) 
07-31 23:42:20.931: E/AndroidRuntime(3557):  at android.widget.LinearLayout.onMeasure(LinearLayout.java:311) 
07-31 23:42:20.931: E/AndroidRuntime(3557):  at android.view.View.measure(View.java:8532) 
07-31 23:42:20.931: E/AndroidRuntime(3557):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3261) 
07-31 23:42:20.931: E/AndroidRuntime(3557):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:250) 
07-31 23:42:20.931: E/AndroidRuntime(3557):  at android.view.View.measure(View.java:8532) 
07-31 23:42:20.931: E/AndroidRuntime(3557):  at android.widget.LinearLayout.measureVertical(LinearLayout.java:531) 
07-31 23:42:20.931: E/AndroidRuntime(3557):  at android.widget.LinearLayout.onMeasure(LinearLayout.java:309) 
07-31 23:42:20.931: E/AndroidRuntime(3557):  at android.view.View.measure(View.java:8532) 
07-31 23:42:20.931: E/AndroidRuntime(3557):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3261) 
07-31 23:42:20.931: E/AndroidRuntime(3557):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:250) 
07-31 23:42:20.931: E/AndroidRuntime(3557):  at android.view.View.measure(View.java:8532) 
07-31 23:42:20.931: E/AndroidRuntime(3557):  at android.view.ViewRoot.performTraversals(ViewRoot.java:915) 
07-31 23:42:20.931: E/AndroidRuntime(3557):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1991) 
07-31 23:42:20.931: E/AndroidRuntime(3557):  at android.os.Handler.dispatchMessage(Handler.java:99) 
07-31 23:42:20.931: E/AndroidRuntime(3557):  at android.os.Looper.loop(Looper.java:150) 
07-31 23:42:20.931: E/AndroidRuntime(3557):  at android.app.ActivityThread.main(ActivityThread.java:4358) 
07-31 23:42:20.931: E/AndroidRuntime(3557):  at java.lang.reflect.Method.invokeNative(Native Method) 
07-31 23:42:20.931: E/AndroidRuntime(3557):  at java.lang.reflect.Method.invoke(Method.java:507) 
07-31 23:42:20.931: E/AndroidRuntime(3557):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849) 
07-31 23:42:20.931: E/AndroidRuntime(3557):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607) 
07-31 23:42:20.931: E/AndroidRuntime(3557):  at dalvik.system.NativeStart.main(Native Method) 

사람은 무슨 일이 일어나고 있는지 나에게 설명 할 수 있습니까? 레이아웃에서 선형 레이아웃을 사용하고 있으므로 캐스팅 문제가 무엇인지 잘 모르겠습니다. 내 레이아웃은 github 링크에 정확히 나와 있습니다. 도와 주셔서 감사합니다.

편집 : 여기뿐만 아니라 row.xml입니다 :

<?xml version="1.0" encoding="utf-8"?> 

<TextView 
    android:id="@+id/rowName" 
    android:layout_width="wrap_content" 
    android:layout_height="fill_parent" 
    android:textStyle="bold" 
    android:textSize="16dp" 
    android:focusable="false" 
    android:paddingLeft="5dp" /> 

<TextView 
    android:id="@+id/rowAdd" 
    android:layout_width="wrap_content" 
    android:layout_height="fill_parent" 
    android:layout_below="@id/rowName" 
    android:focusable="false" 
    android:paddingTop="2dp" 
    android:paddingLeft="5dp"/> 

<TextView 
    android:id="@+id/rowFit" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentTop="true" 
    android:paddingTop="5dp" 
    android:paddingRight="10dp" 
    android:focusable="false" 
    android:textStyle="bold" 
    android:textSize="18dp" /> 

<TextView 
    android:id="@+id/rowDist" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentBottom="true" 
    android:paddingBottom="5dp" 
    android:paddingRight="10dp" 
    android:focusable="false"/> 

<!-- below this is xml for slide expandablelistview --> 
<Button 
    android:id="@+id/expandable_toggle_button" 
    android:text="More" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignBottom="@+id/text" 
    android:layout_alignParentRight="true" 
    android:layout_alignTop="@id/text"/> 

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="horizontal" 
    android:id="@+id/expandable" 
    android:background="#000000"> 

    <!-- put whatever you want in the expandable view --> 
    <TextView 
     android:id="@+id/testtext" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:paddingTop="5dp" 
     android:text="testtestest" 
     android:paddingRight="10dp" 
     android:focusable="false" 
     android:textStyle="bold" 
     android:textSize="18dp" /> 

</LinearLayout> 

<!-- slide expandablelistview xml ends here --> 

+0

을 확인할 수 있습니다 어쩌면 단지 확인하기 위해 문제의 layout_row.xml을 포함한다. 귀하의 제안에 따라 –

+0

이 추가되었습니다. – user2163853

답변

0

귀하의 row.xml 전혀 완료 보이지 않는다. 나는 당신이 사용하고있는 라이브러리가 row.xml이 2 명의 자식이있는 하나의 선형 레이아웃이 될 것으로 기대하고 있다고 생각한다. 첫 번째 자식은 확장되지 않은 뷰이고 두 번째 자식은 확장 된 뷰입니다. 아래 사항 (유효한 레이아웃인지 확인하지 못했습니다).

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       xmlns:slide="http://schemas.android.com/apk/res/com.tjerkw.slideexpandable.library" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:orientation="vertical"> 
<RelativeLayout 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:orientation="horizontal" 
      android:id="@+id/item"> 
<TextView 
    android:id="@+id/rowName" 
    android:layout_width="wrap_content" 
    android:layout_height="fill_parent" 
    android:textStyle="bold" 
    android:textSize="16dp" 
    android:focusable="false" 
    android:paddingLeft="5dp" /> 

<TextView 
    android:id="@+id/rowAdd" 
    android:layout_width="wrap_content" 
    android:layout_height="fill_parent" 
    android:layout_below="@id/rowName" 
    android:focusable="false" 
    android:paddingTop="2dp" 
    android:paddingLeft="5dp"/> 

<TextView 
    android:id="@+id/rowFit" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentTop="true" 
    android:paddingTop="5dp" 
    android:paddingRight="10dp" 
    android:focusable="false" 
    android:textStyle="bold" 
    android:textSize="18dp" /> 

<TextView 
    android:id="@+id/rowDist" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentBottom="true" 
    android:paddingBottom="5dp" 
    android:paddingRight="10dp" 
    android:focusable="false"/> 

<!-- below this is xml for slide expandablelistview --> 
<Button 
    android:id="@+id/expandable_toggle_button" 
    android:text="More" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignBottom="@+id/text" 
    android:layout_alignParentRight="true" 
    android:layout_alignTop="@id/text"/> 
</RelativeLayout> 

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="horizontal" 
    android:id="@+id/expandable" 
    android:background="#000000"> 

    <!-- put whatever you want in the expandable view --> 
    <TextView 
     android:id="@+id/testtext" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:paddingTop="5dp" 
     android:text="testtestest" 
     android:paddingRight="10dp" 
     android:focusable="false" 
     android:textStyle="bold" 
     android:textSize="18dp" /> 

</LinearLayout> 
</LinearLayout> 

<!-- slide expandablelistview xml ends here --> 

또한 샘플 expandable_list_item.xml