Мое приложение имеет строки listview и listview, состоящие из imageView и Textview. Приложение загружает изображения из Интернета, чтобы установить изображение в макете строк. У меня возникла проблема с загрузкой изображений при переходе вверх и вниз по списку. По этой причине я использовал шаблон ViewHolder, чтобы сохранить элементы списка. Проблема была исправлена, но на этот раз у меня возникла новая проблема.Позиция элементов в списке меняется при прокрутке списка.
В Listview имеется 15 строк. Поэтому элементы внизу списка не отображаются. Когда я прокручиваю список, чтобы увидеть элементы, элементы в верхней части списка заканчиваются lisview. Также, когда я скручиваю список, элементы в конце списка входят в список.
Поэтому он не отображает значения или строки, которые необходимо отображать.
последнее состояние методамой GetView() является ..
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.row_layout, null);
TextView programName = (TextView)convertView.findViewById(R.id.programName);
TextView programTime = (TextView)convertView.findViewById(R.id.programTime);
TextView programState = (TextView)convertView.findViewById(R.id.programState);
ImageView programImage = (ImageView)convertView.findViewById(R.id.programImage);
programName.setText(values.programNames.get(position));
programTime.setText(values.programTimes.get(position));
new imageDownload(programImage).execute(values.programImageUrls.get(position));
viewHolder = new ViewHolder();
viewHolder.p_Name = programName;
viewHolder.p_Time = programTime;
viewHolder.p_State = programState;
viewHolder.p_Image = programImage;
convertView.setTag(viewHolder);
}else{
viewHolder = (ViewHolder) convertView.getTag();
}
return convertView;
}
мой взгляд Holder ...
public static class ViewHolder {
TextView p_Name;
TextView p_Time;
TextView p_State;
ImageView p_Image;
}
Спасибо вам много
Вместо этого вы хотите привязать его к viewholder.p_name.setText(), поскольку текстовое представление programName выходит за рамки инструкции if/else. – MrPancake
Вы верны для определенных (фиксированных) –