내 어플리케이션에 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;
}
내보기 홀더 ...
public static class ViewHolder {
TextView p_Name;
TextView p_Time;
TextView p_State;
ImageView p_Image;
}
이 많은 당신에게
programholder textview가 if/else 문의 범위를 벗어나면 viewholder.p_name.setText()에 연결하는 것이 좋습니다. – MrPancake
특정 (고정) –