Search code examples
androidjsonpicassojsonresponse

how to display either video or image from response?


I am getting a response from JSON API where a "Video" tag contains a video or image name with its extension as shown below. I want to show video if that tag contains video (I am loading video in Web view) then hide Image view, or show image if it contains image then hide Web view.

Problem coming is that webview visibility is gone if the response postion has .mp4 and image view is visible but response image is not showing in Picasso.

Response:

    [
{
  
    "Video": "8100931.mp4"
},
{
    
    "Video": "218519.jpeg",
   
}]

Layout:

<androidx.constraintlayout.widget.ConstraintLayout
        android:id="@+id/llVideoPost"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:visibility="visible">

        <WebView
            android:id="@+id/wvPostVideo"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:focusable="false"
            android:screenReaderFocusable="false"
            android:visibility="visible"
            app:layout_constraintDimensionRatio="1:1"
            tools:ignore="MissingConstraints" />

        <ImageView
            android:id="@+id/imgPostImage"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:contentDescription="@string/todo"
            android:scaleType="fitXY"
            android:visibility="gone"
            app:layout_constraintDimensionRatio="1:1"
            tools:ignore="MissingConstraints" />

    </androidx.constraintlayout.widget.ConstraintLayout>

I tried this code Code for calling response:

String videoTag= businessList.get(position).getVideo();
   
 
    if (businessList.get(position).getVideo().endsWith(".mp4")) {
        holder.wvPostVideo.setVisibility(View.VISIBLE);
        holder.imgPostImage.setVisibility(View.GONE);
        holder.wvPostVideo.loadUrl("https://smakerspace.s3.ap-south-1.amazonaws.com/Video/" + videoTag);
    } else if (businessList.get(position).getVideo().endsWith(".jpeg")) {

        holder.wvPostVideo.setVisibility(View.GONE);
        holder.imgPostImage.setVisibility(View.VISIBLE);
        Picasso.get()
                .load("https://smakerspace.s3.ap-south-1.amazonaws.com/upload/"+videoTag)
                .rotate(90)
                .into(holder.imgPostImage);
    }

Solution

  • replace  https://smakerspace.s3.ap-south-1.amazonaws.com/upload/ with https://smakerspace.s3.ap-south-1.amazonaws.com/Video/
    

    Becuase you have stored these image and video file into one db folder And please use Videoview for video player its make eassy to play a video into android