0
我有一個項目列表。他們每個人都有一組數據與TextView
s顯示。這些數據大部分保持不變。但我有一個距離字段,我想更新,每當我從位置提供商獲得新的鎖定。更新所有適配器中的TextView - 最有效的方法
問題是:我應該只更新我的數據並在我的適配器上調用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()
。
我會等一天,也許有人可以添加一些東西,但如果這是要走的路,那就這樣吧(然後當然你會得到一個接受)。 –
沒有麻煩@MichałK,希望它無論如何幫助。讓我知道你是否拿出了一些東西。謝謝 – gwa
好吧,它當然有效,也許如果有更輕量級的選項,我會稍後改變它,但現在我想不出更好的解決方案。 –