我在回收站视图中隐藏了一些 imageViews,但是当我向下滚动时,所有 imageViews 都隐藏了

i hide some imageViews inside recycler view, but when i do scroll down all imageViews hide

您好!

我是 android 的新手,但我有 html 和 javascript 方面的知识。所以我有一个 JSON 有一些选项(img,或者不是 img),我创建了一个回收视图来列出这个 JSON 一切都好,稍后我尝试隐藏一些 imageView 卡因为JSON显示这个没有图片。工作正常

但是当我向下滚动到底部限制所有 imageView 隐藏时,我不知道如何解决它,我在网上搜索但我找不到解决这个问题的方法。

适配器中的代码

@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");

        // postViewHolder.imgTimeLine = @+id/image_timeline

        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);
        }
        putImgProfile putImg=new putImgProfile(addPost.getDatosTimeine().getString("pDir"), img);
        putImg.execute();
    } catch (JSONException e) {
        e.printStackTrace();
    }
}

带回收器的卡片结构

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
    android:id="@+id/cvManana"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    card_view:cardCornerRadius="4dp"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/apk/res-auto">
    <LinearLayout android:background="@drawable/textlines"
        android:paddingLeft="4dp"
        android:paddingRight="4dp"
        android:paddingTop="6dp"
        android:paddingBottom="6dp"
        android:orientation="vertical"
        android:id="@+id/post"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
            <de.hdodenhof.circleimageview.CircleImageView
                android:id="@+id/imgPerfil"
                android:layout_width="50dp"
                android:layout_height="50dp"
                android:layout_gravity="center_horizontal"
                android:layout_marginRight="8dp"
                android:scaleType="centerCrop"
                android:src="@mipmap/ic_load_img" />
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="left"
                android:orientation="vertical">
                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content">
                    <TextView
                        android:id="@+id/tv_fechaPost"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:text="hace 44 minutos sep. 22º 16"
                        android:textColor="#999" />
                </LinearLayout>
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content">
                    <TextView
                        android:id="@+id/tv_nickname"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:paddingRight="12dp"
                        android:text="SonickSeven"
                        android:textColor="#24650e"
                        android:textSize="16dp"
                        android:textStyle="bold" />
                </LinearLayout>
            </LinearLayout>
        </LinearLayout>
        <LinearLayout
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <LinearLayout
                android:orientation="horizontal"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="15dp"
                android:id="@+id/contentTextStory">
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:id="@+id/tv_postTimeLine"
                    android:textColor="#666"
                    android:textSize="15dp"
                    android:layout_gravity="left"
                    android:text="historias"/>
            </LinearLayout>
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:id="@+id/contentFiles">
                <!-- image to hide -->
                <ImageView
                    android:id="@+id/image_timeline"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:adjustViewBounds="true"
                    android:cropToPadding="false"
                    android:scaleType="fitStart"
                    card_view:srcCompat="@drawable/campo_manana" />
                <!-- end imagen to hide -->
            </LinearLayout>
            <LinearLayout
                android:paddingTop="4dp"
                android:paddingBottom="7dp"
                android:layout_gravity="left"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">
                <LinearLayout
                    android:gravity="right"
                    android:layout_weight="1.0"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content">
                    <ImageButton
                        android:id="@+id/bt_reply"
                        android:layout_gravity="center_vertical"
                        android:scaleType="centerCrop"
                        android:layout_width="20dp"
                        android:layout_height="20dp"
                        android:background="@mipmap/ic_reply_gray"/>
                    <TextView
                        android:id="@+id/countReply"
                        android:text="(3)"
                        android:textSize="12dp"
                        android:layout_gravity="center"
                        android:textColor="#999"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content" />
                </LinearLayout>
                <LinearLayout
                    android:layout_weight="1.0"
                    android:layout_width="match_parent"
                    android:gravity="right"
                    android:layout_height="wrap_content">
                    <ImageButton
                        android:id="@+id/bt_share"
                        android:scaleType="centerCrop"
                        android:layout_gravity="center_vertical"
                        android:layout_width="20dp"
                        android:layout_height="20dp"
                        android:background="@mipmap/ic_share_gray"/>
                    <TextView
                        android:id="@+id/countShare"
                        android:text="(3)"
                        android:textSize="12dp"
                        android:layout_gravity="center"
                        android:textColor="#999"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content" />
                </LinearLayout>
                <LinearLayout
                    android:layout_weight="1.0"
                    android:layout_width="match_parent"
                    android:gravity="right"
                    android:layout_height="wrap_content">
                    <ImageButton
                        android:layout_gravity="center_vertical"
                        android:id="@+id/bt_like"
                        android:scaleType="centerCrop"
                        android:layout_width="20dp"
                        android:layout_height="20dp"
                        android:background="@mipmap/ic_like_gray"/>
                    <TextView
                        android:id="@+id/countLike"
                        android:text="(3)"
                        android:textSize="12dp"
                        android:layout_gravity="center"
                        android:textColor="#999"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content" />
                </LinearLayout>
                <LinearLayout
                    android:layout_weight="1.0"
                    android:layout_width="match_parent"
                    android:gravity="right"
                    android:layout_height="wrap_content">
                    <ImageButton
                        android:id="@+id/bt_dislike"
                        android:layout_gravity="center_vertical"
                        android:scaleType="centerCrop"
                        android:layout_width="20dp"
                        android:layout_height="20dp"
                        android:background="@mipmap/ic_nolike_gray"/>
                    <TextView
                        android:id="@+id/countNoLike"
                        android:text="(3)"
                        android:textSize="12dp"
                        android:layout_gravity="center"
                        android:textColor="#999"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content" />
                </LinearLayout>
            </LinearLayout>
        </LinearLayout>
    </LinearLayout>
</android.support.v7.widget.CardView>

我看到当我到达滚动底部并向上时 开关 再次触发,但它不会因为回收器视图 运行 所有 数组JSON。对不起,我能理解工作原理 android-java

不需要设置可见的地方需要重新设置可见

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);
    }

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();
    }
}