안드로이드 개발 질문/답변
(글 수 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; } }