Прежде всего, моя проблема:
Мой ListView
woun't прокрутки плавно.Эффективное ArrayAdapter
Теперь куча деталей:
настоящее время я использую в моем приложении к ArrayAdapter<CustomClass>
для отображения текста и изображений и в каждом элементе ListView
. Я пытаюсь сделать ListView
прокруткой максимально гладкой. Но как только текст становится длиннее (около 40 символов), ListView
начинает заикаться при прокрутке.
Я показываю около 9 строк в то же время. Если я делаю ListView
меньше (около 6 строк), он отлично работает.
Я не внедряю onScrollListener
, и у меня нет больших фоновых задач.
Это код, который я сейчас использую (только GetView и держатель):
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//View row = convertView;
Holder holder = null;
if(convertView == null){
//Log.e("adapter", "convertview == null");
LayoutInflater inflater = ((Activity)context).getLayoutInflater();
convertView = inflater.inflate(layoutResourceId, parent, false);
holder = new Holder();
holder.imgIcon = (ImageView)convertView.findViewById(R.id.icon);
holder.txtTitle = (TextView)convertView.findViewById(R.id.folder_name);
holder.txtInfo = (TextView)convertView.findViewById(R.id.info_text);
holder.pBar = (ProgressBar)convertView.findViewById(R.id.pBar);
convertView.setTag(holder);
}else{
holder = (Holder)convertView.getTag();
}
TrackInfo tInfo = data.get(position);
if(tInfo == null){
return convertView;
}
holder.imgIcon.setImageResource(icon);
holder.txtTitle.setText(tInfo.getTitle());
return convertView;
}
static class Holder
{
ImageView imgIcon;
TextView txtTitle;
TextView txtInfo;
ProgressBar pBar;
}
Вы можете заметить, есть больше элементов, чем я активно использовать. Это связано с тем, что я обычно использую другие, но я в настоящее время игнорирую их, так как я пытался выяснить, почему он не прокручивается плавно.
Как уже упоминалось, это длина строки tInfo.getTitle()
. Я не могу изменить длину строк, так как это имена файлов, на которые я не могу влиять.
Сейчас мой ВОПРОС:
В чем проблема? Разве это так много данных? Или мой код плохой?
Я тестирую Moto G (Quadro Core 1.2GHz, more details here).
Благодарим за внимание, добро пожаловать!
Используйте Traceview и определите, где ваша проблема. – CommonsWare
Хорошо, спасибо. Это похоже на то, что мне нужно в первую очередь, но выглядит довольно информативно. – MalaKa