0

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

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

4

2 回答 2

0

您无法在 getView 方法中清除列表数据。您必须从 listAdapter 中清除。然后它将正常工作。

于 2013-03-09T07:57:02.527 回答
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()。

还有问题吗?

于 2013-03-09T07:19:46.590 回答