У меня есть настроенный BaseAdapter для моей ListView с этим кодом:прокрутка ListView с настраиваемым BaseAdapter очень медленно
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null)
{
}
else
{
holder = (ViewHolder) convertView.getTag();
}
convertView = mInflater.inflate(R.layout.user_submissions_customisation, null);
holder = new ViewHolder();
holder.JournalName = (TextView) convertView.findViewById(R.id.JournalName);
holder.SubmissionTitle = (TextView) convertView.findViewById(R.id.SubmissionTitle);
holder.SubmissionDate = (TextView) convertView.findViewById(R.id.SubmissionDate);
holder.statusOk=(ImageView)convertView.findViewById(R.id.statusOkImage);
holder.statusRejected=(ImageView)convertView.findViewById(R.id.statusRejectedImage);
holder.statusProcessing=(ImageView)convertView.findViewById(R.id.statusProcessingImage);
convertView.setTag(holder);
ImageView statusOk=(ImageView)convertView.findViewById(R.id.statusOkImage);
ImageView statusRejected=(ImageView)convertView.findViewById(R.id.statusRejectedImage);
ImageView statusProcessing=(ImageView)convertView.findViewById(R.id.statusProcessingImage);
MDPIActivity mdpi = new MDPIActivity();
Context context =mdpi.getContext();
LocalDatabase localDatabase = new LocalDatabase(context); //Instantiation of the DB
int status = localDatabase.getSubmissionStatus(position+1);
if (status==102 | status==19)
{
statusRejected.setVisibility(View.VISIBLE);
}
else
{
if (status==29)
{
statusOk.setVisibility(View.VISIBLE);
}
else
{
statusProcessing.setVisibility(View.VISIBLE);
}
}
holder.JournalName.setText(submissionsArrayList.get(position).getJournalTitle()+"-"+submissionsArrayList.get(position).getID());
holder.SubmissionTitle.setText(submissionsArrayList.get(position).getTitle());
holder.SubmissionDate.setText(submissionsArrayList.get(position).getDate());
return convertView;
}
static class ViewHolder {
TextView JournalName;
TextView SubmissionTitle;
TextView SubmissionDate;
ImageView statusOk;
ImageView statusRejected;
ImageView statusProcessing;
}
Все работает WEL, но создание списка на экране и прокрутка происходит довольно медленно. Я использовал это для EY списка тоже:
android:fastScrollEnabled="true"
android:scrollingCache="true"
android:smoothScrollbar="true"
Но вид меняется от previeous вида на ListView медленно и прокрутка списка тоже.
Спасибо, akkilis, проблема в том, что позиция элементов меняется, когда я выполняю scrooling, и я использую эту информацию в моем состоянии if для некоторых изображений. –
его не меняется, но, похоже, меняется. – akkilis
это потому, что если для любого элемента строки вы не задали данные и этот элемент присутствовал в предыдущей строке с некоторыми данными, он будет отображаться одинаково, потому что теперь вы повторно используете представление конвертации. – akkilis