2011-04-17 45 views
2

我创建了一个具有自定义SimpleCursorAdapter的列表视图。我想要在列表中的第一个元素中放置一个标题。一次可以在屏幕上显示8个视图。当我向下滚动到第九个视图时,第一个元素的标题出现。至少我相信那是发生了什么。我删除了列表视图上方的一个按钮,允许所有元素出现在屏幕上,只有第一个元素具有标题。Android - 自动回收listview元素?

我相信我每次都会迫使新的观点被夸大。我已经阅读了一下convertview,它似乎是你必须手动实现的东西。

@Override 
public View newView(Context context, Cursor cursor, ViewGroup parent) { 

    final LayoutInflater inflater = LayoutInflater.from(context); 
    int position = cursor.getPosition(); 
    View v; 
    v = inflater.inflate(R.layout.roster_lv_row_entry_with_header, parent, false);  
    if(position > 0) 
     v = inflater.inflate(R.layout.roster_lv_row_entry_no_header, parent, false); 

    return v; 

回答

4

你建议立即进行删除,如果必要覆盖(final int position, View convertView, ViewGroup parent)方法在你的适配器类,并

  1. 分配convertView参数 新值(,不过还好只是使用它,如果它是正确的类型,并使用基于yourListData.get(position)的适当数据填充它,其中yourListData是例如List<?>扩展名。)
  2. 然后返回它。
+0

而这似乎解决了这个问题!谢谢。 – 2011-04-17 07:08:37

+0

我遇到问题。我的应用在后台加载图像的位置..我在视图中显示了三个项目,当我点击其中一个项目时。他们重漆...我遇到的问题是。该列表视图正在重用仍在屏幕上的项目。或者看起来如此。 – 2011-04-20 20:49:08

+1

为了避免这种情况,您应该始终为convertView参数指定一个新值,因为它在1.步骤中。这样它不会缓存和滚动不会导致这种副作用。 – rekaszeru 2011-04-20 20:55:00