Android: настройка видимости изображения в выпуске списка - PullRequest
0 голосов
/ 31 августа 2011

У меня есть просмотр списка и показ изображения с камеры с номером изображения. Мой код выглядит так, как показано ниже

           TextView imageCountview = (TextView) row.findViewById(R.id.TextViewImageCount); ;
            //checking whether count is zero, if so hiding both image and count
            if(ImageCount.equals("0")){
                imageCountview.setVisibility(8);
                ImageView camimage = (ImageView) row.findViewById(R.id.imageViewlistcam);
                camimage.setVisibility(8);
            }
            else{
                imageCountview.setText(ImageCount);
            }

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

когда я прокручиваю вверх, часть элементов списка идет за экраном, что является ожидаемым поведением. когда я прокручиваю камеру, изображения исчезают, хотя это было показано ранее. Очень своеобразное поведение в списке. что я здесь делаю ?? Кто-нибудь может мне помочь.

Спасибо за ваше время заранее.

мой адаптер

class MyIncidentAdapter extends ArrayAdapter{

        public MyIncidentAdapter(Context context, int textViewResourceId,
                ArrayList<String> dbResults) {
            super(context, textViewResourceId, dbResults);
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View row = convertView;
            if (row == null) {
                LayoutInflater inflater = getLayoutInflater();
                row = inflater.inflate(R.layout.row_incident, parent, false);
            }

            TextView incidentID = (TextView) row.findViewById(R.id.label_incident);
            incidentID.setText((db_results.get(position)).toString());

            String Final = null;
            String ImageCount = "0";
            String VideoCount = "0";
            String RecordingCount="0";
            //getting image count
            SQLiteDatabase db10;
            db10 = openOrCreateDatabase("filestore", MODE_PRIVATE, null);
            Cursor cursor = db10.rawQuery(
                    "SELECT count(urls) as numbers FROM files where incident_id='"+((db_results.get(position)).toString())+"'", null);
            while (cursor.moveToNext()) {
                ImageCount = String.valueOf(cursor.getString(cursor
                        .getColumnIndex("numbers")));
            }
            cursor.close();

            //getting video
            Cursor cursor1 = db10.rawQuery(
                    "SELECT count(urls) as numbers FROM videos where incident_id='"+((db_results.get(position)).toString())+"'", null);
            while (cursor1.moveToNext()) {
                VideoCount = String.valueOf(cursor1.getString(cursor1
                        .getColumnIndex("numbers")));
            }
            cursor1.close();

            //getting audio count
            Cursor cursor11 = db10.rawQuery(
                    "SELECT count(urls) as numbers FROM audios where incident_id='"+((db_results.get(position)).toString())+"'", null);
            while (cursor11.moveToNext()) {
                RecordingCount = String.valueOf(cursor11.getString(cursor11
                        .getColumnIndex("numbers")));
            }
            cursor11.close();



            //Final = "Image:"+ImageCount+ "      Video:"+VideoCount+ "      Audio:"+RecordingCount;
            //TextView countinfo = (TextView) row.findViewById(R.id.textViewCount);
            //countinfo.setText(Final);

            TextView imageCountview = (TextView) row.findViewById(R.id.TextViewImageCount); ;
            //checking whether count is zero, if so hiding both image and count
            if(ImageCount.equals("0")){
                imageCountview.setVisibility(8);
                ImageView camimage = (ImageView) row.findViewById(R.id.imageViewlistcam);
                camimage.setVisibility(8);
            }
            else{
                imageCountview.setText(ImageCount);
            }


            TextView videoCountview = (TextView) row.findViewById(R.id.textViewVideoCount);
            if(VideoCount.equals("0")){
                videoCountview.setVisibility(8);
                ImageView imgvid = (ImageView)row.findViewById(R.id.imageViewlistvid);
                imgvid.setVisibility(8);
            }
            else{
                videoCountview.setText(VideoCount);
            }


            TextView audioCountview = (TextView) row.findViewById(R.id.textViewAudioCount);
            if(RecordingCount.equals("0")){
                audioCountview.setVisibility(8);
                ImageView audioimg = (ImageView)row.findViewById(R.id.imageViewlistaud);
                audioimg.setVisibility(8);
            }
            else{
                audioCountview.setText(RecordingCount);
            }

            String InsDate=null;
            Cursor cursor111 = db10.rawQuery(
                    "SELECT incident_date FROM incident where incident_id='"+((db_results.get(position)).toString())+"'", null);
            while (cursor111.moveToNext()) {
                InsDate = String.valueOf(cursor111.getString(cursor111
                        .getColumnIndex("incident_date")));
            }
            cursor111.close();

            TextView incidentDate = (TextView) row.findViewById(R.id.label_date);
            incidentDate.setText(InsDate);

            Cursor cursor1111 = db10.rawQuery(
                    "SELECT description FROM incident where incident_id='"+((db_results.get(position)).toString())+"'", null);
            while (cursor1111.moveToNext()) {
                description = String.valueOf(cursor1111.getString(cursor1111
                        .getColumnIndex("description")));
            }
            cursor1111.close();
            db10.close();
            TextView incidentDesc = (TextView) row.findViewById(R.id.label_des);


            if(description.equals(" ")){
                incidentDesc.setVisibility(8);
            }
            else{
                incidentDesc.setText(description.trim());
            }



            return row;
        }

Ответы [ 2 ]

1 голос
/ 31 августа 2011

Передайте null в родительском параметре, чтобы надуть API.

row = inflater.inflate(R.layout.row_incident, null, false);
0 голосов
/ 01 сентября 2011

ответ найден с помощью этого Вопроса .просто я должен показать снова, когда бы я ни прятался, используя метод setvisibility.

...