Update a TextView in all Adapters - most efficient way
<p>I have a list of items. Each of them has a set of data displayed with <code>TextView</code>s. This data remains mostly unchanged. But I have a <strong>distance</strong> field, which I would like to update whenever I get new lock from location provider.</p>

<p>The question is: <strong>Should I just update my data and call <code>notifyDataSetChanged()</code> on my Adapter or is there a more efficient way?</strong></p>

<p>Seems very expensive to reload all the lists (I have several of them in a ViewPager) just because one TextView in each list item needs to be updated.</p>

<p>Here is my <code>getView()</code> from my adapter. It might help:</p>

<pre><code>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;
}
</code></pre>

<p><strong>I also thought about directly referencing the <code>holder.distance</code> but it seems like a bad idea to do it outside <code>getView()</code>.</strong></p>
