我有一个包含10个图像和名称的列表。点击下一个按钮,它显示10个带有名字的图像,但它也显示前10个图像(共20个图像)。
我想只显示当前的10个图像,并希望从ListView中删除前10个图像。我怎样才能做到这一点?
我已尝试过myArrayList.clear();
arrayList.remove();
,adapter.clearListView();
和listView.removeAllView();
,但我仍然收到了20张图片(10张图片和10幅旧图片)。
请使用示例代码建议一些解决方案。
我的代码是
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder view;
LayoutInflater inflator = activity.getLayoutInflater();
if(convertView==null)
{
view = new ViewHolder();
convertView = inflator.inflate(R.layout.image_detail_view, null);
view.txtViewTitle = (TextView) convertView.findViewById(R.id.textView1);
view.imgViewFlag = (ImageView) convertView.findViewById(R.id.imageView1);
convertView.setTag(view);
}
else
{
view = (ViewHolder) convertView.getTag();
}
listImage.clear();
listText.clear();
notifySetDataChange();
return convertView;
}
我在另一个类中创建列表视图并在上面的代码中调用适配器..
我试图清除listView ..
图片和名称来自服务器,它们本质上是动态的。
答案 0 :(得分:0)
您只能处理适配器。重置适配器中的数据并调用adapter.notifyDataSetChanged()。
UDP:
每次需要行视图时,系统都会调用getView()。因此,请勿使用数据更改列表,并在此方法中调用notifyDataSetChanged()。
class CustomAdapter extends ArrayAdapter {
private List<YourItem> items;
public void setItems(List<YourItem> newItems) {
items = newItems;
notifyDataSetChanged();
}
public View getView(View convertView, int position, ...) {
if (convertView == null) {
// your code
} else {
// your code
}
YourItem item = items.get(position);
// set image to convertView
return convertView;
}
}
因此,每次要更新ListView时,都要使用新项调用setData()。
还有其他问题吗?
答案 1 :(得分:0)
您无法在getView方法中清除列表数据。您必须从listAdapter中清除。然后它将正常工作。