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 -->
을 확인할 수 있습니다 어쩌면 단지 확인하기 위해 문제의 layout_row.xml을 포함한다. 귀하의 제안에 따라 –
이 추가되었습니다. – user2163853