我正在爲平行的iOS和Android編寫應用程序,而且我正面臨一個小問題。在Android中顯示內部代表的設置列表視圖
我顯示的設置給用戶的列表和設置數據在用於部分設置內部表示,如下所示:
Section
Section object
Section object
Section
Section object
等
在iOS中,當用戶點擊一設置對象,或者當系統想要爲其繪製視圖時,它會調用具有NSIndexPath
對象的方法。例如:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
並自動處理這些部分。
在Android中,列表視圖被「扁平化」,缺乏更好的術語。這樣的方法只有一個行標名爲:
public Object getItem(int position);
現在,它實際上是解決試圖represet部分直接在適配器(MySettingsAdapter extends BaseAdapter
)一個相當困難的問題。
現在這個問題是通過展平整個底層數據結構來解決的,但是它幾乎沒有任何重複的代碼。該解決方案更好的我能想到的是像做以下我MySettingsAdapter
:
class MySettingsAdapter extends BaseAdapter {
MyInternalDataStructure settingsData;
int sections;
int rowsForSection[sections];
public MySettingsAdapter (MyInternalDataStructure settingsData) {
this.settingsData = settingsData;
this.sections = settingsData.sections;
for (int i = 0; i < sections; i++) {
rowsForSection[i] = settingsData.settingsInSection[i].size();
}
}
@Override
public Object getItem(int position) {
int sectionFromPostion;
int rowFromPosition;
// Calculate section and row here...
return settingsData.getSetting(sectionFromPostion, rowFromPosition);
}
}
我只是不能計算爲sectionFromPostion
和rowFromPostion
右...