Я скрываю некоторые изображения в представлении ресайклера, но когда я прокручиваю вниз, все изображения скрываются - PullRequest
0 голосов
/ 29 мая 2020

Привет, команда !!

Я новичок в android, но у меня есть знания в html и javascript. Итак, у меня есть JSON, у которого есть некоторые параметры (img или не img), и я создаю представление ресайклера, чтобы перечислить это JSON и все в порядке, позже я пытаюсь скрыть некоторые imageView карты, потому что JSON показывают, что здесь нет изображения. Он отлично работает

Но когда я прокручиваю вниз до нижнего предела, все imageView s скрываются, я не знаю, как это решить, и я ищу в Интернете, но я не могу найти какое-либо решение для этой проблемы.

image android: layout_height = "wrap_content" android: adjustViewBounds = "true" android: cropToPadding = "false" android: scaleType = "fitStart" card_view: srcCompat = "@ drawable / campo_manana" /> android: layout_gravity = "center_vertical" android: scaleType = "centerCrop" android: layout_width = "20dp" android: layout_height = "20dp" android: background = "@ mipmap / ic_nolike_gray" />

Я видел, что когда я go до конца прокрутки и вверх, снова запускает переключатель , но это не могло быть, потому что представление ресайклера запускало весь массив JSON. Извините, я понимаю, как работает android - java

Ответы [ 2 ]

0 голосов
/ 29 мая 2020

Попробуйте это в методе onBindViewHolder:

@RequiresApi(api = Build.VERSION_CODES.O)
@Override
public void onBindViewHolder(postViewHolder postViewHolder, int position) {
addPostTimeline addPost = addPostTimelines.get(position);

try {

CircleImageView img=postViewHolder.imgFoto;
JSONObject fileson=addPost.getDatosTimeine().getJSONObject("file");


if(!fileson.getBoolean("err") && fileson.getString("type").equals("pic")){

//image must be visible and no error
postViewHolder.imgTimeLine.setVisibility(View.VISIBLE);
postViewHolder.contentFiles.setVisibility(View.VISIBLE);

imageTimeline imgTm=new imageTimeline(fileson.getString("src"), postViewHolder.imgTimeLine);
imgTm.execute();

}else if(!fileson.getBoolean("err") && !fileson.getString("type").equals("pic")){

//image shouldn't be visible and no error

postViewHolder.imgTimeLine.setVisibility(View.GONE);
postViewHolder.contentFiles.setVisibility(View.VISIBLE);

}else{

//error

postViewHolder.imgTimeLine.setVisibility(View.GONE);
postViewHolder.contentFiles.setVisibility(View.GONE);

}


putImgProfile putImg=new putImgProfile(addPost.getDatosTimeine().getString("pDir"), img);
putImg.execute();
    } catch (JSONException e) {
        e.printStackTrace();
    }
}
0 голосов
/ 29 мая 2020

Вам нужно сбросить видимое, где вам не нужно устанавливать видимое.

postViewHolder.imgTimeLine.setVisibility(View.VISIBLE);// reset
if(!fileson.getBoolean("err")){ // si tiene archivos adjuntos
        switch (fileson.getString("type")){
            case "Pic":
                imageTimeline imgTm=new imageTimeline(fileson.getString("src"), 
                    postViewHolder.imgTimeLine);
                imgTm.execute();
            break;
            default:
                postViewHolder.imgTimeLine.setVisibility(View.GONE);
            break;
        }
    }else{
        postViewHolder.contentFiles.setVisibility(View.GONE);
    }
...