Android 有效阵列适配器

Android 有效阵列适配器,android,android-listview,Android,Android Listview,首先,我的问题: 我的ListView无法平滑滚动 现在有一系列的细节: 我目前正在我的应用程序中使用阵列适配器,在列表视图的每个元素中显示文本和图像。我一直在努力使列表视图尽可能平滑地滚动。但是一旦文本变长(大约40个字符),滚动时列表视图就会开始结巴。 我同时显示大约9行。如果我将列表视图缩小(大约6行),它可以正常工作。 我没有在CrollListener上实现onScrollListener,也没有运行大型后台任务 这是我当前使用的代码(仅getView和Holder): 你可能会注意到

首先,我的问题:
我的
ListView
无法平滑滚动

现在有一系列的细节:

我目前正在我的应用程序中使用
阵列适配器
,在
列表视图的每个元素中显示文本和图像。我一直在努力使
列表视图
尽可能平滑地滚动。但是一旦文本变长(大约40个字符),滚动时
列表视图就会开始结巴。
我同时显示大约9行。如果我将
列表视图
缩小(大约6行),它可以正常工作。
我没有在CrollListener上实现
onScrollListener
,也没有运行大型后台任务

这是我当前使用的代码(仅getView和Holder):

你可能会注意到有比我积极使用的更多的元素。这是因为我通常也会使用其他的,但我现在忽略了它们,因为我试图找出它为什么不能顺利滚动。
如前所述,它似乎是字符串
tInfo.getTitle()
的长度。我无法更改字符串的长度,因为这些是我无法影响的文件名

现在我的问题:
有什么问题吗?有那么多数据需要处理吗?还是我的代码不好?
我正在测试一款MotoG(1.2GHz四核)



谢谢您的关注,祝您旅途愉快

我正在使用
列表视图中的
字幕
效果。我一直认为,只要我不调用
TextView.setSelected(true)
,这就不会引起任何进一步的处理。因此,我将
android:ellipsize=“marquee”
作为
ListView
-元素布局文件中我的
TextView
的参数,而只选择了一个要突出显示的元素。

显然,我错了。

只要文本对于给定的空间(大约40个字符)不是太长,就没有问题。但是如果文本的大小超过了给定的空间,问题就开始了。
我不确定到底是什么问题,但在查看了
文本视图的源代码后,我意识到启用marquee后还有很多事情要做:

  • 文本视图
    在右侧淡出(而不是
  • Spannable
    用作
    CharSequence
  • 需要检查选框是否应该启动

长话短说:


我删除了字幕,并且
ListView
非常平滑地滚动

使用Traceview并确定问题所在。好的,谢谢。这看起来像是我必须首先了解的东西,但看起来也很有信息量。
@Override
public View getView(int position, View convertView, ViewGroup parent) {

    //View row = convertView;
    Holder holder = null;

    if(convertView == null){
        //Log.e("adapter", "convertview == null");
        LayoutInflater inflater = ((Activity)context).getLayoutInflater();

        convertView = inflater.inflate(layoutResourceId, parent, false);

        holder = new Holder();
        holder.imgIcon = (ImageView)convertView.findViewById(R.id.icon);
        holder.txtTitle = (TextView)convertView.findViewById(R.id.folder_name);
        holder.txtInfo = (TextView)convertView.findViewById(R.id.info_text);
        holder.pBar = (ProgressBar)convertView.findViewById(R.id.pBar);

        convertView.setTag(holder);

    }else{
        holder = (Holder)convertView.getTag();
    }

    TrackInfo tInfo = data.get(position);

    if(tInfo == null){
        return convertView;
    }      

    holder.imgIcon.setImageResource(icon);
    holder.txtTitle.setText(tInfo.getTitle());


    return convertView;
}

static class Holder
{
    ImageView imgIcon;
    TextView txtTitle;
    TextView txtInfo;
    ProgressBar pBar;
}