После примерно 12 часов работы мне удалось написать рабочий класс cursoradapter с супер быстрым кодом знаменитого Google video, этот класс заполнил список из базы данных, с текстом и рисунком за ряд. Но у меня такое ощущение, что я погубил усилия Google по производительности с кодом, который я добавил в конце класса, чтобы заполнить текст и изображение, и я не могу сказать о производительности, когда плохо использую реальную/конечную базу данных ... (с также курсор выполнен в классе деятельности) Вот 2 подклассы:Android Listview с sqlite и CursorAdapter
public class CursorLi extends CursorAdapter {
LayoutInflater minflater;
int imd;
public CursorLi(Context context, Cursor c, boolean autoRequery) {
super(context, c, autoRequery);
minflater = (LayoutInflater)context.getSystemService (Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public View getView(int position, View convertView, ViewGroup parent){
ViewHolder holder;
if (convertView == null){
convertView = minflater.inflate(R.layout.lvitem, parent, false);
holder = new ViewHolder();
holder.text = (TextView) convertView.findViewById(R.id.litext);
holder.icon = (ImageView) convertView.findViewById(R.id.fiig);
convertView.setTag(holder);
} else{
holder = (ViewHolder) convertView.getTag();
}
c.moveToPosition(position);
imd = getResources().getIdentifier(c.getString(6), "drawable", "com.example.myapp");
dr = getResources().getDrawable(imd);
holder.text.setText(c.getString(4));
holder.icon.setImageDrawable(dr);
return convertView;
}
@Override
public void bindView(View view, Context context, Cursor cursor) {}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) { return null; }
}
public static class ViewHolder {
TextView text;
ImageView icon;
}
Может вы, ребята, мне помочь оптимизировать код, пожалуйста? В частности:
Почему я должен был добавить "c.moveToPosition (положение);" ? Я думал, что cursoradapter управляет положением ...
Есть ли более быстрый способ применить изображение к просмотру изображения строки? Я использовал 3 строки кода (db содержит имя файла pic).
getString
- лучший способ?Было ли лучше отдельный класс или подкласс? Когда класс был отдельным классом, я не знал, как получить данные курсора для funciton
getView()
, поэтому теперь объявлен его подкласс класса и указатель .
Если вы хотите спросить меня, почему я не использовал simplecursoradapter, потому что я хотел бы использовать код Google, для работы, так как список может иметь 300 строк ... Благодаря
Спасибо. Итак, почему без «c.moveToPosition (позиция)»; , getString не работает? – Jacks23465
По умолчанию реализация 'getView' в' CursorAdapter' делает это для вас (https://github.com/android/platform_frameworks_support/blob/master/v4/java/android/support/v4/widget/CursorAdapter.java#L247). Если вы (ошибочно) переопределите 'getView', вам нужно сделать это самостоятельно. –