0

我创建了一个自定义ListView并遵循谷歌 http://www.youtube.com/watch?v=wDBM6wVEO70提供的以下程序

但是ListView滚动太慢了。有什么解决办法吗?

这是我的getview代码

public View getView(int position, View convertView, ViewGroup parent) {

    // TODO Auto-generated method stub
    if(convertView==null){
        convertView=inflater.inflate(R.layout.gridlevelinflate, null);
        holder=new ViewHolder();
        holder.levelImg=(ImageView)convertView.findViewById(R.id.lvlPic);
        holder.levelName=(TextView)convertView.findViewById(R.id.lvlName);
        holder.levelLeft=(TextView)convertView.findViewById(R.id.lvlLeft);          
        convertView.setTag(holder);
    } else {
        holder=(ViewHolder)convertView.getTag();
    }
    holder.levelImg.setImageResource(R.drawable.ruzzle);
    holder.levelName.setText("Level " + position++);


    return convertView;
}
4

1 回答 1

0

这段代码中没有任何地方会显着降低您的 ListView 的效率。问题可能出在其他地方。

也就是说,这里有一些效率低于它们可能的东西:

  • 由于它是恒定的,您可以将setImageResource调用移至初始持有者设置(何时convertView == null),但我不认为这会非常缓慢,除非R.drawable.ruzzle非常复杂(甚至可能不是这样)。

  • 您正在找到R.id.lvlLeft然后不使用它,因此可以将其删除,但它是次要的,因为它仅在未回收视图时发生。

  • 您可以使用position+1代替position++,但这非常小,不会产生任何明显的差异。

于 2013-10-31T16:55:06.283 回答