안드로이드 개발 질문/답변
(글 수 45,052)
import java.util.HashMap; import java.util.List; import java.util.Map;
import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.RelativeLayout; import android.widget.SimpleAdapter; import android.widget.TextView;
@SuppressWarnings("unchecked") public class GroupSimpleAdapter extends SimpleAdapter { private List<? extends Map<String, ?>> datas; private HashMap<String, String> _data; private String[] _from; private int[] _to; private int _relativeID; private static final int GROUP_START = 0; private static final int GROUP_CONTENT = 1; public GroupSimpleAdapter(Context context,List<? extends Map<String, ?>> data, int resource, String[] from, int[] to, int relative) { super(context, data, resource, from, to); datas = data; _from = from; _to = to; _relativeID = relative; // TODO Auto-generated constructor stub } @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub View view = super.getView(position, convertView, parent); _data = (HashMap<String, String>) datas.get(position);
int viewType; RelativeLayout groupTitle = (RelativeLayout) view.findViewById(_relativeID); if (position == 0) { viewType = GROUP_START; } else { boolean newGroup = isNewGroupTitle(position); if (newGroup) viewType = GROUP_START; else viewType = GROUP_CONTENT; } if (viewType == GROUP_START) { groupTitle.setVisibility(View.VISIBLE); //보이기 }else{ groupTitle.setVisibility(View.GONE); //가리기 } //타이틀 날짜별로 for(int i = 0; i < _to.length; i++) { ((TextView) view.findViewById(_to[i])).setText(_data.get(_from[i])); } return view; } private boolean isNewGroupTitle(int position) { //현재의 타이틀을 판단 _data = (HashMap<String, String>) datas.get(position); String nowDate = _data.get(_from[0]); //현재 이전의 타이틀을 판단 _data = (HashMap<String, String>) datas.get(position - 1); String preDate = _data.get(_from[0]); _data = (HashMap<String, String>) datas.get(position); if (!nowDate.equals(preDate)) { return true; } return false; } }
로그켓
12-08 12:41:23.436: D/dalvikvm(525): GC_EXTERNAL_ALLOC freed 100K, 51% free 2681K/5379K, external 2061K/2137K, paused 47ms 12-08 12:41:25.586: D/AndroidRuntime(525): Shutting down VM 12-08 12:41:25.586: W/dalvikvm(525): threadid=1: thread exiting with uncaught exception (group=0x40015560) 12-08 12:41:25.626: E/AndroidRuntime(525): FATAL EXCEPTION: main 12-08 12:41:25.626: E/AndroidRuntime(525): java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0 12-08 12:41:25.626: E/AndroidRuntime(525): at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:257) 12-08 12:41:25.626: E/AndroidRuntime(525): at java.util.ArrayList.get(ArrayList.java:311) 12-08 12:41:25.626: E/AndroidRuntime(525): at android.widget.SimpleAdapter.bindView(SimpleAdapter.java:147) 12-08 12:41:25.626: E/AndroidRuntime(525): at android.widget.SimpleAdapter.createViewFromResource(SimpleAdapter.java:126) 12-08 12:41:25.626: E/AndroidRuntime(525): at android.widget.SimpleAdapter.getView(SimpleAdapter.java:114) 12-08 12:41:25.626: E/AndroidRuntime(525): at kpapptim.talk.pase.GroupSimpleAdapter.getView(GroupSimpleAdapter.java:43) 12-08 12:41:25.626: E/AndroidRuntime(525): at android.widget.AbsListView.obtainView(AbsListView.java:1430) 12-08 12:41:25.626: E/AndroidRuntime(525): at android.widget.ListView.measureHeightOfChildren(ListView.java:1216) 12-08 12:41:25.626: E/AndroidRuntime(525): at android.widget.ListView.onMeasure(ListView.java:1127) 12-08 12:41:25.626: E/AndroidRuntime(525): at android.view.View.measure(View.java:8313) 12-08 12:41:25.626: E/AndroidRuntime(525): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138) 12-08 12:41:25.626: E/AndroidRuntime(525): at android.widget.FrameLayout.onMeasure(FrameLayout.java:250) 12-08 12:41:25.626: E/AndroidRuntime(525): at android.view.View.measure(View.java:8313) 12-08 12:41:25.626: E/AndroidRuntime(525): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138) 12-08 12:41:25.626: E/AndroidRuntime(525): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1017) 12-08 12:41:25.626: E/AndroidRuntime(525): at android.widget.LinearLayout.measureVertical(LinearLayout.java:386) 12-08 12:41:25.626: E/AndroidRuntime(525): at android.widget.LinearLayout.onMeasure(LinearLayout.java:309) 12-08 12:41:25.626: E/AndroidRuntime(525): at android.view.View.measure(View.java:8313) 12-08 12:41:25.626: E/AndroidRuntime(525): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138) 12-08 12:41:25.626: E/AndroidRuntime(525): at android.widget.FrameLayout.onMeasure(FrameLayout.java:250) 12-08 12:41:25.626: E/AndroidRuntime(525): at android.view.View.measure(View.java:8313) 12-08 12:41:25.626: E/AndroidRuntime(525): at android.widget.LinearLayout.measureVertical(LinearLayout.java:531) 12-08 12:41:25.626: E/AndroidRuntime(525): at android.widget.LinearLayout.onMeasure(LinearLayout.java:309) 12-08 12:41:25.626: E/AndroidRuntime(525): at android.view.View.measure(View.java:8313) 12-08 12:41:25.626: E/AndroidRuntime(525): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138) 12-08 12:41:25.626: E/AndroidRuntime(525): at android.widget.FrameLayout.onMeasure(FrameLayout.java:250) 12-08 12:41:25.626: E/AndroidRuntime(525): at android.view.View.measure(View.java:8313) 12-08 12:41:25.626: E/AndroidRuntime(525): at android.view.ViewRoot.performTraversals(ViewRoot.java:839) 12-08 12:41:25.626: E/AndroidRuntime(525): at android.view.ViewRoot.handleMessage(ViewRoot.java:1859) 12-08 12:41:25.626: E/AndroidRuntime(525): at android.os.Handler.dispatchMessage(Handler.java:99) 12-08 12:41:25.626: E/AndroidRuntime(525): at android.os.Looper.loop(Looper.java:123) 12-08 12:41:25.626: E/AndroidRuntime(525): at android.app.ActivityThread.main(ActivityThread.java:3683) 12-08 12:41:25.626: E/AndroidRuntime(525): at java.lang.reflect.Method.invokeNative(Native Method) 12-08 12:41:25.626: E/AndroidRuntime(525): at java.lang.reflect.Method.invoke(Method.java:507) 12-08 12:41:25.626: E/AndroidRuntime(525): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 12-08 12:41:25.626: E/AndroidRuntime(525): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 12-08 12:41:25.626: E/AndroidRuntime(525): at dalvik.system.NativeStart.main(Native Method)
파싱해서 글목록을 보여준상태에서 글목록버튼을누르면 저런오류가뜹니다 .
로그에 답이 있네요;;;
java.lang.IndexOutOfBoundsException
배열 두개 있는데 두 놈중 한놈은 size 가 0인데 0번째 놈을 가져오라는 시도가 있었던 겁니다...
과연 범인은....