gpt4 book ai didi

android - 有效数组适配器

转载 作者:行者123 更新时间:2023-11-30 03:05:13 25 4
gpt4 key购买 nike

首先,我的问题:
我的ListView不会顺利滚动。

现在是一堆细节:

我目前正在使用 ArrayAdapter<CustomClass>在我的应用程序中,用于在 ListView 的每个元素中显示文本和图像.我一直在尝试制作 ListView尽可能平滑地滚动。但是一旦文本变长(大约 40 个字符),ListView滚动时开始卡顿。
我同时显示大约 9 行。如果我制作 ListView更小(大约 6 行)它工作正常..
我没有实现 onScrollListener而且我没有运行大型后台任务。

这是我目前使用的代码(只有 getView 和 Holder):

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

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

现在我的问题:
有什么问题?有那么多数据要处理吗?还是我的代码不好?
我正在 Moto G(1.2GHz 四核,more details here)上进行测试。


感谢您的关注,祝您飞行愉快!

最佳答案

我在 ListView 中使用 marquee 效果。我一直认为,只要我不调用 TextView.setSelected(true),就不会导致任何进一步的处理。因此,我在 ListView 元素的布局文件中将 android:ellipsize="marquee" 作为我的 TextView 的参数,而只设置了一个要高亮的元素。

显然,我错了。

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

  • TextView 在右侧淡出(而不是 ...)
  • Spannable 用作CharSequence
  • 需要检查字幕是否应该开始
  • ...


长话短说:

我删除了选取框,ListView 滚动非常流畅。

关于android - 有效数组适配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21922831/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com