但是,要使用上述链接技术,我必须ListView
使ArrayAdapter
.
目前,为了有一种非常优化的方式来更新显示ListView
,我需要对我的ArrayAdapter
public PortfolioArrayAdapter(ListView listView, Activity activity, List<TransactionSummary> transactionSummaries) {
super(activity, R.layout.portfolio_management_row_layout, transactionSummaries);
this.activity = activity;
this.listView = listView;
...
}
// Do not use notifyDataSetChanged, as it will refresh entire ListView.
// We only want to update certain row.
private void refreshView(final int row) {
final int firstVisiblePosition = listView.getFirstVisiblePosition();
final int lastVisiblePosition = listView.getLastVisiblePosition();
if (row < firstVisiblePosition || row > lastVisiblePosition) {
return;
}
this.activity.runOnUiThread(new Runnable() {
public void run() {
final View view = listView.getChildAt(row - firstVisiblePosition);
// Refresh?
getView(row, view, listView);
}
});
}
但是,我觉得传递ListView
引用很不舒服ArrayAdapter
,因为我认为它们应该相互独立?(由于 MVC?)
有没有更好的方法可以让ListView 刷新单行?
在 Java Swing 中,他们以一种非常简洁的方式做到了这一点。它们为表模型提供了以下方法。
因此,该模型可以告诉视图哪一行和哪一列受到影响,而无需知道视图是谁。
在 Andorid 中,我的模型 ( ArrayAdapter
) 需要知道,ListView
是视图,只有这样我的模型才能与视图对话。