我有一个项目清单。他们每个人都有一组用TextView
s 显示的数据。该数据基本保持不变。但是我有一个距离字段,每当我从位置提供者那里获得新锁时,我都想更新它。
问题是:我应该只更新我的数据并调用notifyDataSetChanged()
我的适配器还是有更有效的方法?
重新加载所有列表(我在 ViewPager 中有几个)似乎非常昂贵,因为每个列表项中的一个 TextView 需要更新。
这是我getView()
的适配器。它可能会有所帮助:
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.eventrow, parent, false);
// Creates a ViewHolder and store references to the two children views
// we want to bind data to.
holder = new ViewHolder();
holder.title = (TextView) convertView.findViewById(R.id.eventTitle);
holder.distance = (TextView) convertView.findViewById(R.id.eventDistance);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.title.setText(((EventItem) getItem(position)).getTitle());
holder.distance.setText(String.valueOf(((EventItem) getItem(position)).getDistance()));
return convertView;
}
我也考虑过直接引用,holder.distance
但在外面做这件事似乎是个坏主意getView()
。