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;
}