기초개발자님 원조안드로이드님의 도움으로 진전이 있었습니다.
먼저 감사의 인사 드립니다.
일단 위치가 뒤죽박죽 되지 않는 문제점은 잡았습니다.
일단 프로그래스 수치를 가지고 잇는 리스트가 있고,
getView에서는 이 리스트에 접근하여 해당 포지션의 수치를 가져와 텍스트뷰에 진행률을 seText하는
방식으로 처리하였습니다.
그리고 AsyncTask쪽에서는 직접 TextView를 수정하지 않고
adapter의 notifydatasetchanged를 통하여 새로고침을 실시하였습니다.
그런데 문제가 생겼습니다.
퍼센테이지가 오르면서 계속된 notifydatasetchenged로 인하여 계속 뷰가 그려지니
기존에 이미지뷰에 그려져있던 각 셀의 이미지들이 계속 재로딩되는 현상이 발생하고 있습니다.
계속 새로고침이 되어 뷰를 다시그리다보니 가만히 있음에도 불구하고 이미지를 다시 로딩하니
임시로딩이미지처리한것이 보였다가 다시 이미지가 표시되었다가
깜빡거리는 듯한 현상이 발생하고 있습니다.
아...산넘어 산이군요.ㅠㅠ
일단 소스코드를 첨부해보겠습니다.
어댑터 부분입니다.
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
final ViewHolder viewHolder;
if(convertView == null) {
viewHolder = new ViewHolder();
convertView = mLayoutInflater.inflate(mLayout, parent, false);
viewHolder.thumImageView = (ImageView)convertView.findViewById(R.id.youtube_contents_thum);
viewHolder.titleTextView = (TextView)convertView.findViewById(R.id.youtube_contents_title);
viewHolder.percentTextView = (TextView)convertView.findViewById(R.id.youtube_contents_percent);
convertView.setTag(viewHolder);
}else {
viewHolder = (ViewHolder)convertView.getTag();
viewHolder.thumImageView.setImageResource(R.drawable.intro);
}
final YouTubeVideoDataInfo youTubeVideoDataInfo = mYoutubeArrayList.get(position);
String thumNailImageURL = youTubeVideoDataInfo.getThum();
String title = youTubeVideoDataInfo.getTitle();
ImageView thumNailImageView = viewHolder.thumImageView;
final TextView titleTextView = viewHolder.titleTextView;
final TextView percentTextView = viewHolder.percentTextView;
mImageLoader.displayImage(thumNailImageURL, thumNailImageView, mDisplayImageOptions);
titleTextView.setText(title);
//해당 셀이 셀렉트가 되어 있는지 확인 후 색상 세팅
if(youTubeVideoDataInfo.isChecked()) {
titleTextView.setBackgroundColor(Color.MAGENTA);
}else {
titleTextView.setBackgroundColor(Color.WHITE);
}
if(youTubeVideoDataInfo.isPercentFalg()) {
percentTextView.setText("" + youTubeVideoDataInfo.getPercent());
}else {
percentTextView.setText(youTubeVideoDataInfo.getCheckedText());
}
//AsyncTask 부분입니다.
@Override
protected void onProgressUpdate(Integer... values) {
// TODO Auto-generated method stub
super.onProgressUpdate(values);
int value = values[0];
if(youTubeVideoDataInfo != null && youTubeVideoDataInfo.isPercentFalg() == false) {
youTubeVideoDataInfo.setPercentFalg(true);
}else if(youTubeVideoDataInfo.isPercentFalg()) {
youTubeVideoDataInfo.setPercent(value);
YoutubeList.mYoutubeGridViewApdater.notifyDataSetChanged();
}
}