#android #android-layout #android-preferences
#Android #android-макет #android-настройки
Вопрос:
В одном из моих действий onCreate я использую следующее, чтобы получить представление списка. Применяемый XML-макет взят из XML-файла «country_row». Теперь я хочу использовать общие настройки, чтобы изменить часть макета моего listview, например, цвет шрифта, цвет фона, который должен быть сохранен. Насколько я знаю, я могу добиться этого, используя общие настройки. Но предполагая, что я знаю способ определить его в XML-файле, в этом разделе, как я могу применить некоторые изменения, скажем, другой цвет шрифта или цвет фона, используя тот же XML-файл «country_row». Или мне нужно полностью определить новый XML-файл? Каким образом я в замешательстве.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
int sort = prefs.getInt("sort_pref", -1); // -1 will be the result if no preference was set before
if(sort == 1)
sortOrder = "year";//sort on year
else if (sort == 2)
sortOrder = "country";//sort on country
ContentResolver contentResolver = getContentResolver();
Cursor c = contentResolver.query(CONTENT_URI, null, null, null, sortOrder);
String[] from = new String[] { "year", "country" };
int[] to = new int[] { R.id.year, R.id.country };
SimpleCursorAdapter sca = new SimpleCursorAdapter(this, R.layout.country_row, c, from, to);
setListAdapter(sca);
}
Ответ №1:
Это было бы быстро и грязно:
new SimpleCursorAdapter(this, R.layout.country_row, c, from, to) {
@Override
public void getView(int position, View convertView, ViewGourp parent) {
convertView = super.getView(position, convertView, parent);
View viewToModify = convertView.findViewByid(/* ID of view to modify */);
// apply your changes here
}
}
Чистое решение — создать свой собственный адаптер и сделать это там.