例外資訊,小白只能看明白越界了,但不知道哪里影響的
05-08 09:19:57.612 11256-11256/com.ztw.hy.qualitytest_0427 E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.ztw.hy.qualitytest_0427, PID: 11256
java.lang.ArrayIndexOutOfBoundsException: length=3; index=3
at android.widget.AbsListView$RecycleBin.addScrapView(AbsListView.java:6941)
at android.widget.ListView.layoutChildren(ListView.java:1653)
at android.widget.AbsListView.onLayout(AbsListView.java:2190)
at android.view.View.layout(View.java:16673)
at android.view.ViewGroup.layout(ViewGroup.java:5476)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
at android.view.View.layout(View.java:16673)
at android.view.ViewGroup.layout(ViewGroup.java:5476)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16673)
at android.view.ViewGroup.layout(ViewGroup.java:5476)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
at android.view.View.layout(View.java:16673)
at android.view.ViewGroup.layout(ViewGroup.java:5476)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at com.android.internal.policy.PhoneWindow$DecorView.onLayout(PhoneWindow.java:2727)
at android.view.View.layout(View.java:16673)
at android.view.ViewGroup.layout(ViewGroup.java:5476)
at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2304)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2033)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1209)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6330)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:862)
at android.view.Choreographer.doCallbacks(Choreographer.java:674)
at android.view.Choreographer.doFrame(Choreographer.java:610)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:848)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:179)
at android.app.ActivityThread.main(ActivityThread.java:5769)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:674)
05-08 09:19:57.642 11256-11256/? I/Process: Sending signal. PID: 11256 SIG: 9
getChildView方法
@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
int type = getChildType(groupPosition, childPosition);
switch (type) {
case TYPE_1:
ViewHolderItem itemHolder;
if (convertView == null) {
convertView = LayoutInflater.from(mcontext).inflate(R.layout.item_formentry_view, parent, false);
itemHolder = new ViewHolderItem();
itemHolder.tv_view_name = convertView.findViewById(R.id.tv_view_name);
convertView.setTag(itemHolder);
} else {
itemHolder = (ViewHolderItem) convertView.getTag();
}
itemHolder.tv_view_name.setText(miData.get(groupPosition).get(childPosition).getRecordItem());
View finalConvertView = convertView;
convertView.setOnClickListener(v -> mlistener.onItemClick(finalConvertView, groupPosition, childPosition));
break;
case TYPE_2:
ViewHolderItem2 itemHolder2;
if (convertView == null) {
convertView = LayoutInflater.from(mcontext).inflate(R.layout.item_view_radiobtn, parent, false);
itemHolder2 = new ViewHolderItem2();
itemHolder2.tv_radiobtn_name = convertView.findViewById(R.id.tv_radiobtn_name);
itemHolder2.rbtn_N = convertView.findViewById(R.id.rbtn_N);
itemHolder2.rbtn_Y = convertView.findViewById(R.id.rbtn_Y);
convertView.setTag(itemHolder2);
} else {
itemHolder2 = (ViewHolderItem2) convertView.getTag();
}
itemHolder2.rbtn_Y.setChecked(true);
itemHolder2.tv_radiobtn_name.setText(miData.get(groupPosition).get(childPosition).getRecordItem());
View finalConvertView2 = convertView;
convertView.setOnClickListener(v -> mlistener.onItemClick(finalConvertView2, groupPosition, childPosition));
itemHolder2.rbtn_N.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(mcontext, "不合格", Toast.LENGTH_SHORT).show();
}
});
break;
}
return convertView;
}
getChildType和getGroupTypeCount方法,不理解getGroupTypeCount應回傳什么,每次例外越界的index總是該方法回傳的值 +1
@Override
public int getChildType(int groupPosition, int childPosition) {
try {
if (mgData.get(groupPosition).getgName().equals("基本資訊")) {
return TYPE_1;
} else if (mgData.get(groupPosition).getgName().equals("產品外觀")) {
return TYPE_2;
} else {
return TYPE_2;
}
} catch (Exception e) {
Log.e("例外", e.toString());
return TYPE_1;
}
}
@Override
public int getGroupTypeCount() {
return 2;
}
uj5u.com熱心網友回復:
這是陣列下標越界,你的陣列只有三個,那么最大的下標為2,你出現了3uj5u.com熱心網友回復:
小白重寫錯方法了,導致回傳的getGroudTypeCount為2應呼叫getChildTypeCountuj5u.com熱心網友回復:
我搞錯了,陣列并沒有越界。。。重新方法錯了,我給你子項增加的布局,結果重寫這個getGroudTypeCount了,導致越界轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/283465.html
標籤:Android
上一篇:qt emit信號時提示0xC0000005: 讀取位置 0x00000024 時發生訪問沖突。請問各位大佬該如何解決
下一篇:求助,找不到方法
