我有一个ListView,我需要更新特定行的内容而无需重新加载所有ListView内容。这个ListView可能很大。
例如(为了简单起见)我需要更改位于适配器“x”位置的视图(行)中的TextView(适配器中的label3)的内容。实际上我使用TouchListView(Commonsware)适配器。
class IconicAdapter extends ArrayAdapter<FavoriteObject> {
IconicAdapter() {
super(FavoritesMainActivity.this, R.layout.favbusrow, array);
}
public View getView(int position, View convertView,ViewGroup parent) {
View row=convertView;
LayoutInflater inflater=getLayoutInflater();
ListFav lf = (listFav) array.get(position).getContent();
row=inflater.inflate(R.layout.favrow,parent, false);
row.setBackgroundColor(Color.WHITE);
TextView label=(TextView)row.findViewById(R.id.busNameF);
label.setText(lf.getName());
label.setTextColor(Color.BLACK);
label.setTypeface(FontsManager.getBoldFont());
TextView label2 =(TextView)row.findViewById(R.id.busNumberF);
label2.setText(lf.getNumber());
label2.setTextColor(Color.BLACK);
label2.setTypeface(FontsManager.getBoldFont());
TextView label3 =(TextView)row.findViewById(R.id.busDirectionF);
label3.setText(lf.getQuickName());
label3.setTextColor(Color.BLACK);
label3.setTypeface(FontsManager.getRegularFont());
return(row);
}
}
有人有想法吗?
谢谢!
答案 0 :(得分:2)
更新适配器中的数据集以反映您的更改,然后在适配器上调用notifyDataSetChanged()。
答案 1 :(得分:1)
我需要更改位于适配器“x”位置的视图(行)中的TextView(适配器中的label3)的内容。
该位置可能会或可能不会在视野中。您可以使用getFirstVisiblePosition()
和getLastVisiblePosition()
查看是否,然后计算子索引并使用getChildAt()
来检索该行。
您还需要确保您的数据模型反映了这一变化,因此当用户滚动时,他们不会“丢失”您所做的任何直接UI修改。