package dm.ExamListviewDynamicAdd;
import java.util.ArrayList;
import java.util.HashMap;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
public class ExamListViewDynamicAdd extends Activity {
    /** Called when the activity is first created. */
   
    ListView listview;
    IdeaListAdapter listadapter;
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        arItem = new ArrayList<ListItem>();
        listview = (ListView)findViewById(R.id.mainlistview);
        listview.setOnItemClickListener(new AdapterView.OnItemClickListener() 
  {
   public void onItemClick(AdapterView parent, View view, int position, long id)
   {
    ListItem listitem = arItem.get(position);
    if (listitem.itemInfo.containsKey("more"))
    {
     arItem.remove(listitem);
     
     for (int i = 10; i < 16; i++)
           {
            ListItem item = new ListItem();
            item.itemInfo.put("title", "title" + String.format("%d", i));
            item.itemInfo.put("date", "date" + String.format("%d", i));
            arItem.add(item);
           }
     listadapter.notifyDataSetChanged();
     listview.setAdapter(listadapter);
     
    }
   }
  });
     
        listadapter = new IdeaListAdapter(this, R.layout.item1, arItem);
        
        for (int i = 0; i < 10; i++)
        {
         ListItem item = new ListItem();
         item.itemInfo.put("title", "title" + String.format("%d", i));
         item.itemInfo.put("date", "date" + String.format("%d", i));
         arItem.add(item);
        }
        ListItem item = new ListItem();
        item.itemInfo.put("more", "더보기");
        arItem.add(item);
        
        listview.setAdapter(listadapter);
  
    }
    
    class ListItem
    {
     HashMap<String, String> itemInfo = new HashMap<String, String>();
    }
    
    ArrayList<ListItem> arItem;
    
    class IdeaListAdapter extends BaseAdapter
  {
  Context       context;
  ArrayList<ListItem> arList;
  LayoutInflater   layoutIf;
  int layout;
  
  public IdeaListAdapter(Context c, int l, ArrayList<ListItem> al)
  {
   context  = c;
   layout   = l;
   layoutIf = (LayoutInflater)c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
   arList   = al;
  }
  
  public int getCount() {
   return arList.size();
  }
  public String getItem(int position)
  {
   return arList.get(position).toString();
  }
  
  public long getItemId(int position) {
   return position;
  }
  public boolean getItemMore(int position) {
           return arList.get(position).itemInfo.containsKey("more") ? true : false;
       }
 
  public View getView(int position, View convertView, ViewGroup parent)
  {
   if (convertView == null)
   {
    if (getItemMore(position))
     convertView = layoutIf.inflate(R.layout.item2, null);
    else
    {
     convertView = layoutIf.inflate(layout, parent, false);
     TextView txt_title = (TextView)convertView.findViewById(R.id.ideatitle);
     txt_title.setText(arList.get(position).itemInfo.get("title"));
     TextView txt_wdate = (TextView)convertView.findViewById(R.id.ideawdate);
     txt_wdate.setText(arList.get(position).itemInfo.get("date"));
    }
   }
   
   return convertView;
  }
 };
 
}

리스트에 동적으로 추가 하려는데요
리스트에

title0
title1
title2
title3
title4
title5
title6
title7
title8
title9
더보기

초기에 이렇게 되어 있고 더보기를 클릭했을시
title10
title11
title12
title13
title14
title15

이렇게 더 추가 하려 하는데요.
생각데로 라면 위의소스가 작동을 해야 하는데
더보기 클릭시

1~16까지 나오는게 아니라 중복도 되고 썩기기도 하고 막 그러네요
다른건 둘째치고 리스트 갱신을 잘 못하는것 같은데요

틀린부분이 있다면 조언 부탁드립니다