在我的Android应用程序中,我试图将listitem删除为 -
dla.remove(itemselected);
Toast.makeText(getApplicationContext(), "Pos is : "+pos+": Item is "+itemselected.getTitle(), Toast.LENGTH_SHORT).show();
dla.notifyDataSetChanged();
dla.notifyDataSetInvalidated();
适配器getView()
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v=convertView;
LayoutInflater inflater=(LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if(v==null){
v=inflater.inflate(R.layout.downloaditem, parent,false);
title=(TextView) v.findViewById(R.id.downTitle);
status =(TextView) v.findViewById(R.id.downStatus);
pb=(ProgressBar) v.findViewById(R.id.downprogressBar);
title.setText(list.get(position).getTitle());
status.setText(UnitConverter.convert(list.get(position).getDownloaded())+"/"+UnitConverter.convert(list.get(position).getFileSize())+" ("+
list.get(position).getPercentage()+"%)");
pb.setProgress(list.get(position).getPercentage());
return v;
}
else{
return v;
}
}
我在删除项目后记录了ListView
并删除了该项但未正确更新view
,我的意思是只删除ListView
中最后一项。
例如。如果我删除第0个索引处的项目,它将被删除,但只删除最后一个项目。我可以做错什么?
答案 0 :(得分:1)
你的问题在这里:
View v=convertView;
if(v==null){
}
如果转换视图不为null,则不提供if的else语句。 所以你需要改变的是:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v=convertView;
LayoutInflater inflater=(LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if(v==null){
v=inflater.inflate(R.layout.downloaditem, parent,false);
}
title=(TextView) v.findViewById(R.id.downTitle);
status =(TextView) v.findViewById(R.id.downStatus);
pb=(ProgressBar) v.findViewById(R.id.downprogressBar);
title.setText(list.get(position).getTitle());
status.setText(UnitConverter.convert(list.get(position).getDownloaded())+"/"+UnitConverter.convert(list.get(position).getFileSize())+" ("+
list.get(position).getPercentage()+"%)");
pb.setProgress(list.get(position).getPercentage());
return v;
}