自定义listview缓慢处理

时间:2013-10-31 16:38:48

标签: android

我创建了一个自定义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;
}

1 个答案:

答案 0 :(得分:0)

此代码中没有任何内容可以突显显示会导致ListView变慢的显着低效率。问题可能出在其他地方。

那就是说,这里的效率低于它们的效率:

  • 由于它是常量,您可以将setImageResource调用移动到初始持有者设置(convertView == null时),但除非R.drawable.ruzzle,否则我不会指望它非常缓慢是非常复杂的(也许甚至不是那么)。

  • 您发现R.id.lvlLeft然后没有使用它,因此可以删除,但它很小,因为只有在视图不被回收时才会发生。

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