Адаптер курсора в Android Заполните неправильное изображение при прокрутке списка - PullRequest
2 голосов
/ 11 декабря 2010

У меня проблема с адаптером курсора, у меня есть пользовательский адаптер, в котором есть изображение, текст, флажок, все работает нормально, но когда я прокручиваю список с 30 пунктами, некоторые изображения расходятся, и текст отображается нормально.

в чем проблема, я должен исправить любое свойство или изменить реализацию все время, когда мое изображение приходит из курсора, который выбирает из баз данных.

код:

@Override
        public View getView(int position, View convertView, ViewGroup parent) {
            return super.getView(position, convertView, parent);
        }

        @Override
        public void bindView(View view, Context context, final Cursor cursor) {


            Image = (ImageView) view.findViewById(R.id.CoverArtImage);
            byte[] theByteArray = cursor.getBlob(4);
            if (theByteArray != null) {
                Bitmap bitmap = BitmapFactory.decodeByteArray(theByteArray, 0,
                        theByteArray.length);
                Image.setImageBitmap(bitmap);
                bitmap = null;
                theByteArray = null;
            }

            tText = (TextView) view.findViewById(R.id.TrackTextView);
            tText.setText(cursor.getString(2));

            aText = (TextView) view.findViewById(R.id.ArtistTextView);
            aText.setText(cursor.getString(3));

            aText = (TextView) view.findViewById(R.id.AlbumTextView);
            aText.setText(cursor.getString(1));

            dateText = (TextView) view.findViewById(R.id.DateTimeTextView);
            dateText.setText(cursor.getString(5));

            deletecheckBox.setTag(cursor.getString(0));
            deletecheckBox.setOnClickListener(new View.OnClickListener() {

                public void onClick(View v) {
                    CheckBox chk = (CheckBox) v;
                    if (chk.isChecked()) {
                        deleteId.add(chk.getTag().toString());
                        // System.out.println("Chaked......" + chk.getTag());
                    } else {
                        deleteId.remove(chk.getTag().toString());
                        // System.out.println("UnChaked......" + chk.getTag());
                    }
                }
            });
        }

        @Override
        public View newView(Context context, final Cursor cursor,
                ViewGroup parent) {
            final View view = mInflater.inflate(R.layout.histrory_row, parent,
                    false);
            view.setOnClickListener(HistoryDetails.this);
            view.setTag(cursor.getString(0));
            deletecheckBox = (CheckBox) view.findViewById(R.id.DeleteCheckbox);
            bindView(view, context, cursor);
            return view;
        }

Спасибо

...