Может быть, я поступаю неправильно, но если это так, пожалуйста, поправьте меня. Вот ситуация: у меня есть запрос, который возвращает строки URI для мелодий звонка, хранящихся в базе данных. Я расширил SimpleCursorAdapter, чтобы переопределить функцию getView (), чтобы запросить RingtoneManager для TITLE связанного URI звонка, однако функция getView () вызывается более одного раза в строке и несколько замедляет мое приложение. Есть ли способ запустить функцию один раз, чтобы отобразить uris на заголовки и сохранить эти данные где-нибудь, чтобы getView () мог быстро получить к ним доступ?
Фрагменты кода, связанного с кодом:
public String getRingerTitle(String uriString) {
Uri ringtoneUri = Uri.parse(uriString);
Ringtone r = RingtoneManager.getRingtone(this.context, ringtoneUri);
return r.getTitle(context);
}
public View getView(int position, View convertView, ViewGroup parent)
{
View v = convertView;
if (v == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = inflater.inflate(this.layout, null);
}
this.cursor.moveToPosition(position);
String ringer = this.cursor.getString(this.cursor.getColumnIndex(PoolDbAdapter.KEY_RINGER));
TextView rTitle = (TextView) v.findViewById(R.id.ringer_line_item);
rTitle.setText(getRingerTitle(ringer));
return(v);
}
Как можно оптимизировать функцию getRingerTitle () для кэширования данных или только для запроса каждого элемента один раз?
ИЛИ - есть ли лучший способ, которым я должен подходить к этому?
Спасибо