如何删除以前的列表内容并添加新内容?

时间:2013-03-09 07:14:46

标签: android android-layout android-intent android-widget

我有一个包含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 ..

图片和名称来自服务器,它们本质上是动态的。

2 个答案:

答案 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中清除。然后它将正常工作。