ListView的子项不能一直删除,当然删除到只有7项的时候就会报数组溢出的问题。

求解答!以下是代码

packagecom.example.ex_listview;

importjava.util.ArrayList;

importandroid.os.Bundle;
importandroid.app.Activity;
importandroid.view.Menu;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.view.ViewGroup;
importandroid.widget.BaseAdapter;
importandroid.widget.Button;
importandroid.widget.ImageView;
importandroid.widget.ListView;
importandroid.widget.RelativeLayout;
importandroid.widget.TextView;

publicclassMainActivityextendsActivityimplementsOnClickListener{

int[]imgs=newint[]{R.drawable.cup,R.drawable.date,
R.drawable.drawer,R.drawable.folder,R.drawable.gear,
R.drawable.globe,R.drawable.heart,R.drawable.help,
R.drawable.inbox,R.drawable.info,R.drawable.leaf,
R.drawable.lock,R.drawable.mail,R.drawable.moleskine,
R.drawable.monitor,R.drawable.music,R.drawable.notebook,
R.drawable.pill,R.drawable.present,R.drawable.print};
ArrayList<DataEncap>list=newArrayList<DataEncap>();
privateMyBaseAdaptermba;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setTitle("消息");

Buttonbtndelete=(Button)findViewById(R.id.button1);
Buttonbtnadd=(Button)findViewById(R.id.button2);
btndelete.setOnClickListener(this);
btnadd.setOnClickListener(this);

ListViewlistview=(ListView)findViewById(R.id.listView1);
mba=newMyBaseAdapter();
listview.setAdapter(mba);

for(inti=0;i<imgs.length;i++){
DataEncapdata=newDataEncap(imgs[i],"昵称"+i,"已聊过的消息内容"+i,"20:"+i);
list.add(data);
}

}

publicvoiddelete(){
if(list.size()>0){
list.remove(0);
mba.notifyDataSetChanged();
}
}

publicvoidadd(DataEncapdata){
list.add(data);
mba.notifyDataSetChanged();
}

classMyBaseAdapterextendsBaseAdapter{

@Override
publicintgetCount(){
returnimgs.length;
}

@Override
publicViewgetView(intposition,ViewconvertView,ViewGrouparg2){
RelativeLayoutlayout=null;
ViewHolderholder=null;
if(convertView==null){
layout=(RelativeLayout)getLayoutInflater().inflate(R.layout.listview_item,null);
holder=newViewHolder();
holder.p_w_picpath=(ImageView)layout.findViewById(R.id.p_w_picpathView1);
holder.tv_name=(TextView)layout.findViewById(R.id.textView1);
holder.tv_text=(TextView)layout.findViewById(R.id.textView2);
holder.tv_time=(TextView)layout.findViewById(R.id.textView3);
layout.setTag(holder);
}else{
layout=(RelativeLayout)convertView;
holder=(ViewHolder)layout.getTag();
}
DataEncapdata=list.get(position);
holder.p_w_picpath.setImageResource(data.img);
holder.tv_text.setText(data.text);
holder.tv_name.setText(data.name);
holder.tv_time.setText(data.time);
returnlayout;
}

@Override
publicObjectgetItem(intposition){
returnnull;
}

@Override
publiclonggetItemId(intposition){
return0;
}

}

classDataEncap{
intimg;
Stringname;
Stringtext;
Stringtime;

publicDataEncap(intimg,Stringname,Stringtext,Stringtime){
this.img=img;
this.name=name;
this.text=text;
this.time=time;
}
}

classViewHolder{
ImageViewp_w_picpath;
TextViewtv_name;
TextViewtv_text;
TextViewtv_time;
}

@Override
publicbooleanonCreateOptionsMenu(Menumenu){
getMenuInflater().inflate(R.menu.main,menu);
returntrue;
}

@Override
publicvoidonClick(Viewv){
switch(v.getId()){
caseR.id.button1:
delete();
break;
caseR.id.button2:
DataEncapdata=newDataEncap(R.drawable.ic_launcher,"昵称","已聊过的消息内容","20:20");
add(data);
break;
default:
break;
}
}

}