作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我将数据从 Cursor 加载到 ListView ,但我的 ListView 并没有真正显示“平滑”。当我在 ListView 的 scollbar 上上下拖动时,数据会发生变化。有些项目在我的列表中看起来像是重复显示。我有一个“复杂的 ListView”(两个 TextView ,一个 ImageView )所以我使用 newView()、bindView() 来显示数据。有人可以帮助我吗?
最佳答案
我将向您描述如何解决您遇到的此类问题。可能这会对您有所帮助。
所以,在列表适配器中你有这样的代码:
public View getView(int position, View contentView, ViewGroup arg2)
{
ViewHolder holder;
if (contentView == null) {
holder = new ViewHolder();
contentView = inflater.inflate(R.layout.my_magic_list,null);
holder.label = (TextView) contentView.findViewById(R.id.label);
contentView.setTag(holder);
} else {
holder = (ViewHolder) contentView.getTag();
}
holder.label.setText(getLabel());
return contentView;
}
如您所见,我们仅在检索到 holder 后才设置列表项值。
但是如果你将代码移到上面的 if 语句中:
holder.label.setText(getLabel());
所以它会像下面这样处理:
if (contentView == null) {
holder = new ViewHolder();
contentView = inflater.inflate(R.layout.my_magic_list,null);
holder.label = (TextView) contentView.findViewById(R.id.label);
holder.label.setText(getLabel());
contentView.setTag(holder);
}
您的当前应用程序行为将与列表项重复。
可能会有帮助。
关于android - 如何在android中加载Listview "smoothly",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1320478/
我是一名优秀的程序员,十分优秀!