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)






파싱해서 글목록을 보여준상태에서 글목록버튼을누르면 저런오류가뜹니다 .