2011-07-05 5 views
0

안녕하십니까. 약 5 ~ 6 번 위치에서 목록을 스크롤하면 목록보기의 어댑터로 맞춤 어댑터 클래스가 사용됩니다. 내 수업ERROR/AndroidRuntime (1884) : java.lang.ArrayIndexOutOfBoundsException 목록보기를 스크롤 할 때

07-06 04:48:36.635: ERROR/AndroidRuntime(1884): FATAL EXCEPTION: main<br> 
07-06 04:48:36.635: ERROR/AndroidRuntime(1884):java.lang.ArrayIndexOutOfBoundsException    
07-06 04:48:36.635: ERROR/AndroidRuntime(1884):  at   android.widget.AbsListView$RecycleBin.addScrapView(AbsListView.java:4528)<br> 
07-06 04:48:36.635: ERROR/AndroidRuntime(1884):  at android.widget.ListView.scrollListItemsBy(ListView.java:2863) 
07-06 04:48:36.635: ERROR/AndroidRuntime(1884):  at android.widget.ListView.arrowScrollImpl(ListView.java:2340) 
07-06 04:48:36.635: ERROR/AndroidRuntime(1884):  at android.widget.ListView.arrowScroll(ListView.java:2287) 
07-06 04:48:36.635: ERROR/AndroidRuntime(1884):  at android.widget.ListView.commonKey(ListView.java:2089) 
07-06 04:48:36.635: ERROR/AndroidRuntime(1884):  at android.widget.ListView.onKeyDown(ListView.java:2036) 
07-06 04:48:36.635: ERROR/AndroidRuntime(1884):  at android.view.KeyEvent.dispatch(KeyEvent.java:1256) 
07-06 04:48:36.635: ERROR/AndroidRuntime(1884):  at android.view.View.dispatchKeyEvent(View.java:3855) 
07-06 04:48:36.635: ERROR/AndroidRuntime(1884):  at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:787) 
07-06 04:48:36.635: ERROR/AndroidRuntime(1884):  at android.widget.ListView.dispatchKeyEvent(ListView.java:2021) 
07-06 04:48:36.635: ERROR/AndroidRuntime(1884):  at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:789) 
07-06 04:48:36.635: ERROR/AndroidRuntime(1884):  at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:789) 
07-06 04:48:36.635: ERROR/AndroidRuntime(1884):  at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:789) 
07-06 04:48:36.635: ERROR/AndroidRuntime(1884):  at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchKeyEvent(PhoneWindow.java:1687) 
07-06 04:48:36.635: ERROR/AndroidRuntime(1884):  at com.android.internal.policy.impl.PhoneWindow.superDispatchKeyEvent(PhoneWindow.java:1120) 
07-06 04:48:36.635: ERROR/AndroidRuntime(1884):  at android.app.Activity.dispatchKeyEvent(Activity.java:2073) 
07-06 04:48:36.635: ERROR/AndroidRuntime(1884):  at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1663) 
07-06 04:48:36.635: ERROR/AndroidRuntime(1884):  at android.view.ViewRoot.deliverKeyEventToViewHierarchy(ViewRoot.java:2560) 
07-06 04:48:36.635: ERROR/AndroidRuntime(1884):  at android.view.ViewRoot.handleFinishedEvent(ViewRoot.java:2535) 
07-06 04:48:36.635: ERROR/AndroidRuntime(1884):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1867) 
07-06 04:48:36.635: ERROR/AndroidRuntime(1884):  at android.os.Handler.dispatchMessage(Handler.java:99) 
07-06 04:48:36.635: ERROR/AndroidRuntime(1884):  at android.os.Looper.loop(Looper.java:123) 
07-06 04:48:36.635: ERROR/AndroidRuntime(1884):  at android.app.ActivityThread.main(ActivityThread.java:3647) 
07-06 04:48:36.635: ERROR/AndroidRuntime(1884):  at java.lang.reflect.Method.invokeNative(Native Method) 
07-06 04:48:36.635: ERROR/AndroidRuntime(1884):  at java.lang.reflect.Method.invoke(Method.java:507) 
07-06 04:48:36.635: ERROR/AndroidRuntime(1884):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
07-06 04:48:36.635: ERROR/AndroidRuntime(1884):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
07-06 04:48:36.635: ERROR/AndroidRuntime(1884):  at dalvik.system.NativeStart.main(Native Method) 

코드를 얻을 로그 캣 출력을 조사하는 것은

 import android.app.AlertDialog; 
    import android.content.Context; 
    import android.view.LayoutInflater; 
    import android.view.View; 
    import android.view.ViewGroup; 
    import android.view.View.OnClickListener; 
    import android.widget.ArrayAdapter; 
    import android.widget.ImageButton; 
    import android.widget.ImageView; 
    import android.widget.TextView; 
    import android.widget.Toast; 

    public class MyClassAdapter extends ArrayAdapter<String> { 
private ArrayList<String> values; 
private LayoutInflater inflator; 
    private Context mContext; 
static class ViewHolder { 
    public TextView text; 
    public TextView gender; 
    public TextView distance; 
    public ImageView image; 
     public ImageView onlineicon; 
     public TextView uid; 
} 

public MyClassAdapter(Context context, ArrayList<String> values) { 
    super(context, R.id.TextView01, values); 
    this.values = new ArrayList<String>(values); 
    inflator = (LayoutInflater) context 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    mContext=context; 
} 

@Override 
public int getViewTypeCount() { 
    return 2; 
} 

@Override 
public int getItemViewType(int position) { 
    return position; 
} 

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

    if (rowView == null) { 
     rowView = inflator.inflate(R.layout.row_odd, null); 
     ViewHolder viewHolder = new ViewHolder(); 
     viewHolder.text = (TextView) rowView.findViewById(R.id.TextView01); 
     viewHolder.gender=(TextView)rowView.findViewById(R.id.textView2); 
     viewHolder.distance=(TextView)rowView.findViewById(R.id.textView1); 
     viewHolder.image = (ImageView) rowView 
       .findViewById(R.id.ImageView01); 
     viewHolder.onlineicon=(ImageView)rowView.findViewById(R.id.imageView1); 
     viewHolder.uid=(TextView)rowView.findViewById(R.id.textView3); 
     rowView.setTag(viewHolder); 
    } 
    ViewHolder holder = (ViewHolder) rowView.getTag(); 
    String Check=values.get(position); 

     holder.text.setText(check); 
    holder.gender.setText("kss"); 
    holder.distance.setText(""); 
    holder.uid.setText("XYz"); 
    return rowView; 
} 

}

+0

무엇이'res1 [2]'입니까? – jamapag

+0

@jamapag res1은 문자열 배열이고 res1 [2]는 해당 배열의 문자열 요소입니다! – Vivalavista

답변

2

getViewTypeCount에서 어댑터가 아칸소라고보고하고있다 정확히 2 개의 항목보기 유형이 있지만 사용자의 getItemViewType 메소드는 목록에 최대 2 개의 항목 만있는 경우가 아니면 범위 [0, 2]로 제한되지 않는 위치를 반환합니다. ListView에서 초를 초과하는 위치를 묻는 경우 어댑터에서 잘못된 뷰 유형을보고합니다.

+0

고마워요! 그것은 일했다! – Vivalavista

관련 문제