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

问题描述 投票:-1回答:2

Hello Team !!

我是android上的新手,但我对html和javascript有所了解。因此,我有一个具有某些选项(img或非img)的JSON,并且我创建了一个回收器视图以列出此JSON,并且一切正常,之后我尝试隐藏一些imageView卡片,因为JSON证明这没有图片。效果很好

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

enter image description here

适配器中的代码

@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>

我看到,当我再次滚动到滚动底部并再次按下switch触发器时,却不能这样做,因为回收者视图运行了所有array JSON。抱歉,我可以理解android-java的工作方式

android android-recyclerview hide
2个回答
0
投票

您需要在无需设置可见区域的情况下将可见区域重置。

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

0
投票

尝试使用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();
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.