안드로이드 개발 질문/답변
(글 수 45,052)
리스트뷰에 내용이 스크롤을 해야 될 정도로 갯수을 가지고 있을때.
getView에서 현재 보여지는 포지션에 내용을 set할수가 있는데요.
근데.. 이게 뭐가 문제인지.
계속.
1
2
3
4
5
6
1
이런식으로 계속 중복되어서 나오게 되는 상황이 있네요.
이걸 어떻게 처리를 해야 되는건지 아무리 봐도 모르겠습니다.
혹시 비슷한 증상을 수정하셨다거나 또는 알고 계신분들은 힌트좀 부탁 드릴께요..
2010.09.03 16:30:45
package com.istation.rock.notes;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import android.content.ContentResolver;
import android.content.ContentUris;
import android.content.Context;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.ParcelFileDescriptor;
import android.provider.MediaStore;
import android.provider.MediaStore.Images;
import android.provider.MediaStore.Video;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.ImageView.ScaleType;
class ImageViewAdapter extends BaseAdapter implements DataListener {
private static final int MEDIA_INFO_AUDIO = 1;
private static final int MEDIA_INFO_VIDEO = 2;
private static final int MEDIA_INFO_IMAGE = 3;
private static final int GRID_VIEW_MODE = 1;
private static final int LIST_VIEW_MODE = 2;
private static final int ICON_VIEW_MODE = 3;
private LayoutInflater mInflater;
private static final int LINK_NULL = 0;
private static final int LINK_BROKEN = LINK_NULL + 1;
private static final int LINK_OK = LINK_NULL + 2;
public int mbMedioLink = LINK_NULL;
private DataListener mDataListener = null;
ArrayList<AllData> mDataList;
ContentResolver mContentResolver;
int mPosition = -1;
int mResourceId;
Context mContext;
int mViewMode;
boolean mBusy = false;
public ViewHolder holder;
public ImageViewAdapter() {
}
public ImageViewAdapter(Context context, ArrayList<NoteAllData> dataList,
int resourceid, int viewMode) {
mInflater = LayoutInflater.from(context);
mContentResolver = context.getContentResolver();
mDataList = dataList;
mResourceId = resourceid;
mContext = context;
mViewMode = viewMode;
}
public void setDataListener(DataListener listener) {
mDataListener = listener;
}
/*
* (non-Javadoc)
*
* @see android.widget.Adapter#getCount()
*/
@Override
public int getCount() {
// TODO Auto-generated method stub
return mDataList.size();
}
/*
* (non-Javadoc)
*
* @see android.widget.Adapter#getItem(int)
*/
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return mNoteDataList.get(position);
}
/*
* (non-Javadoc)
*
* @see android.widget.Adapter#getItemId(int)
*/
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
/*
* (non-Javadoc)
*
* @see android.widget.Adapter#getView(int, android.view.View,
* android.view.ViewGroup)
*/
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
Log.d("ImageViewAdapter", "position = " + position);
final ViewHolder holder;
if (convertView == null) {
holder = new ViewHolder();
convertView = mInflater.inflate(mResourceId, null);
convertView.setTag(holder);
holder.tvTitle = (TextView) convertView.findViewById(R.id.title);
holder.ivImage = (ImageView) convertView.findViewById(R.id.Image);
} else {
holder = (ViewHolder) convertView.getTag();
}
if (mBusy) {
if (holder.ivImage != null) {
iv.setImageResource(defaultThumbIndex);
}
if (holder.tvTitle != null) {
String title = mNoteDataList.get(position).getTitle();
holder.tvTitle.setText(mNoteDataList.get(position).getTitle());
holder.tvTitle.setTag(this);
}
} else {
if (holder.ivImage != null) {
iv.setImageBitmap(myBitmap);
}
if (holder.tvTitle != null) {
holder.tvTitle.setText(mNoteDataList.get(position).getTitle());
}
}
return convertView;
}
public class ViewHolder {
TextView tvTitle;
ImageView ivImage;
}
}



