Gridview滚动 - 回收视图

问题描述:

我试图回收gridview项目,因为目前的解决方案工作,但是laggy和吃掉资源。但是,我无法弄清楚如何。 Android开发者网站的例子并不适合我。Gridview滚动 - 回收视图

我getview()方法:

public View getView(int position, View paramView, ViewGroup paramViewGroup) { 
    long starttime = System.currentTimeMillis(); 

View localView = MMWeb.this.getLayoutInflater().inflate(R.layout.grid_item, null); 
TextView localTextView = (TextView)localView.findViewById(2131034115); 
ImageView localImageView = (ImageView)localView.findViewById(2131034114); 

cItem = items.get(position); 
cItem.add(Integer.toString(position)); 
localTextView.setText(getItemName()); 
Bitmap localBitmap = d.getImage(cItem.get(3), cItem.get(2)); 
localImageView.setImageBitmap(localBitmap); 
Common.toLog("getView took "+ (System.currentTimeMillis() - starttime) + " ms"); 
return localView; } 

有人能指出我在正确的方向?任何建议如何解决这个将不胜感激!

+0

值得看的[在UI性能谷歌IO视频](http://www.youtube.com/watch?v=N6YdwzAvwOA) – Merlin

+0

@Merlin林看着那现在...但不能获得viewholder工作(如果我把视图持有人类正确后,getView()我得到了一个“令牌语法错误类”,无效类型“错误 - 编辑:nooby错误:我写了”ViewHolder()“,而不是”ViewHolder“ –

只需使用paramView,这是adapterview传递的可重用视图,因为它在屏幕上不再可见。

if (paramView == null) { 
    // inflate a new view into paramView. 
    paramView = MMWeb.this.getLayoutInflater().inflate(R.layout.grid_item, null); 
} 
// fill the paramView 
TextView localTextView = (TextView)paramView .findViewById(2131034115); 
ImageView localImageView = (ImageView)paramView .findViewById(2131034114); 

cItem = items.get(position); 
cItem.add(Integer.toString(position)); 
localTextView.setText(getItemName()); 
Bitmap localBitmap = d.getImage(cItem.get(3), cItem.get(2)); 
localImageView.setImageBitmap(localBitmap); 

return paramView; 
+0

这样做的伎俩......但是这又引发了另一个问题(当我第一次开始使用gridview时,我首先删除了回收站的原因) 当我滚动时,项目跳转随机地被重新排序。那么? –

+0

在分配if语句之外的项目之后问题解决了。 –