我有一個自定義對象列表,我將其加載到允許多選的ActivityList中,並在右側顯示覆選框。這些自定義對象包含名爲「enabled」的字段。當我加載數據時,我想要滾動瀏覽對象列表,並選中代表具有啓用字段標記爲true的對象的每一行的複選框。目前我已將所有記錄加載到ActivityList中,但我無法將任何行「檢查」,即使對象被標記爲「已啓用」。使用預先選擇的行加載ActivityList
這是我使用某一行標記的代碼調用setListAdapter後直接檢查
for (int i = 0; i < sourceList.length; i++) {
DataSource d = sourceList[i];
view.getChildAt(i).getClass().toString());
CheckedTextView checkView = (CheckedTextView)view.getChildAt(i);
checkView.setChecked(Boolean.parseBoolean(d.enabled));
}
我已經把這個代碼,我已經把它放在onContentChanged()函數。但是,在這兩個地方行都沒有顯示,所以view.getChildAt(i)返回null,所以顯然這行不會被檢查。
任何人都可以告訴我在哪裏可以放這個代碼,以便它將在所有行添加並顯示在屏幕上後執行?
謝謝!
最初我沒有自定義適配器我只是使用ArrayAdapter。爲了覆蓋getView()方法,我創建了一個自定義適配器和擴展ArrayAdapter。我仍然允許ArrayAdapter類完成大部分工作,但我重寫了getView()。這裏是我的代碼爲getView()
@Override
public View getView(int position, View convertView, ViewGroup parent) {
convertView = super.getView(position, convertView, parent);
if (convertView.getClass() == CheckedTextView.class){
CheckedTextView checkView = (CheckedTextView)convertView;
DataSource d = getItem(position);
checkView.setText(d.getName());
checkView.setChecked(Boolean.parseBoolean(d.enabled));
}
return convertView;
}
即使使用此代碼沒有任何複選框正在檢查。 DataSource的名稱字段被設置爲文本,但setChecked()方法似乎不適合我。我也試過硬編碼,這是
checkView.setChecked(true);
這對我也不工作。你對我可能做錯什麼有更多的想法嗎?
再次感謝!