안드로이드 개발 질문/답변
(글 수 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번째 놈을 가져오라는 시도가 있었던 겁니다...
과연 범인은....