RecyclerView:电影图像不显示

RecyclerView : movie image not displaying

我正在尝试使用 asynctaskloader 获取数据并使用 recyclerview 在片段中显示图像。 以前我这样做过,然后我没有得到 error.I 我不确定为什么会这样。

但我的图像没有显示

当我使用毕加索时,这是我在 logcat

D/Picasso: Main        created      [R4] Request{http://image.tmdb.org/t/p/w342/8UlWHLMpgZm9bx6QYh0NFoq67TZ.jpg}
D/Picasso: Dispatcher  enqueued     [R4]+1ms 
D/Picasso: Hunter      executing    [R4]+2ms 
D/Picasso: Main        created      [R5] Request{http://image.tmdb.org/t/p/w342/dWSnsAGTfc8U27bWsy2RfwZs0Bs.jpg}
D/Picasso: Dispatcher  enqueued     [R5]+1ms 
D/Picasso: Hunter      executing    [R5]+1ms 
D/EGL_emulation: eglMakeCurrent: 0xddc5e660: ver 2 0 (tinfo 0xe3e7ec40)
D/EGL_emulation: eglMakeCurrent: 0xddc5e660: ver 2 0 (tinfo 0xe3e7ec40)
D/Picasso: Dispatcher  retrying     [R4]+612ms 
D/Picasso: Hunter      executing    [R4]+612ms 
D/Picasso: Dispatcher  retrying     [R5]+609ms 
D/Picasso: Hunter      executing    [R5]+609ms 
D/Picasso: Dispatcher  retrying     [R5]+1167ms 
D/Picasso: Hunter      executing    [R5]+1168ms 
D/Picasso: Dispatcher  retrying     [R4]+1175ms 
D/Picasso: Hunter      executing    [R4]+1176ms 
D/Picasso: Dispatcher  batched      [R5]+1171ms for error
D/Picasso: Dispatcher  batched      [R4]+1179ms for error
D/Picasso: Dispatcher  delivered    [R5]+1413ms, [R4]+1419ms 
D/Picasso: Main        errored      [R5]+1413ms HTTP 504
D/Picasso: Main        errored      [R4]+1419ms HTTP 504

片段类:

package com.example.srilakshmibomireddy.movies

import android.content.Context
import android.content.Context.INPUT_METHOD_SERVICE
import android.net.ConnectivityManager
import android.net.Uri
import android.os.Bundle
import android.support.v4.app.Fragment
import android.support.v4.content.Loader
import android.support.v7.widget.GridLayoutManager
import android.support.v7.widget.RecyclerView
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.view.inputmethod.InputMethodManager
import android.widget.Toast
import org.json.JSONException
import org.json.JSONObject
import java.util.ArrayList

class Popular : Fragment(),android.support.v4.app.LoaderManager.LoaderCallbacks<String>{
    val popular:String = "popular"
    lateinit var recyclerView: RecyclerView
    lateinit var layoutManager:GridLayoutManager
    val list = ArrayList<MoviesData>()
    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
                              savedInstanceState: Bundle?): View? {
        val view: View = inflater.inflate(R.layout.fragment_popular, container, false)
        val inputMethodManager = activity!!.getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager
        inputMethodManager.hideSoftInputFromWindow(view.windowToken, InputMethodManager.HIDE_NOT_ALWAYS)
        val connectivityManager = activity!!.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
        val networkInfo = connectivityManager.activeNetworkInfo
        if (networkInfo != null && networkInfo.isConnected && activity != null) {
            GetMovies(context!!,popular)
        } else {
            Toast.makeText(activity, "please check network connectivity", Toast.LENGTH_SHORT).show()
        }
        recyclerView = view.findViewById(R.id.popular_posters)
        layoutManager = GridLayoutManager(context, 2)
        layoutManager.setOrientation(GridLayoutManager.VERTICAL)
        recyclerView.layoutManager = layoutManager
        recyclerView.setHasFixedSize(true)
        val moviesadapter = MoviesAdapter(context!!)
        moviesadapter.movieslist = list
        recyclerView.adapter = moviesadapter
        loaderManager.initLoader(0, null, this)
        return view
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        val connectivityManager = activity!!.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
        val networkInfo = connectivityManager.activeNetworkInfo
        if (networkInfo != null && networkInfo.isConnected) {
            GetMovies(context!!,popular)
        } else {
            Toast.makeText(activity, "please check network connectivity", Toast.LENGTH_SHORT).show()
        }
    }
    override fun onCreateLoader(p0: Int, p1: Bundle?): Loader<String> {
        return  GetMovies(context!!,popular)
    }

    override fun onLoaderReset(p0: Loader<String>) {

    }

    override fun onLoadFinished(p0: Loader<String>, data: String?) {
        val moviesadapter = MoviesAdapter(context!!)
        if (data == null) {
            Toast.makeText(context, "No Data Fetched", Toast.LENGTH_SHORT).show()
            return
        }
        try {
            val jsonObject = JSONObject(data)
            val jsonArray1 = jsonObject.getJSONArray("results")
            for (i in 0 until jsonArray1.length()) {
                val jsonObject1 = jsonArray1.getJSONObject(i)
                val title = jsonObject1.getString("title")
                val popularity = jsonObject1.getString("popularity")
                val poster = jsonObject1.optString("poster_path").toString()
                val orgTitle = jsonObject1.getString("original_title")
                val release = jsonObject1.getString("release_date")
                val overview = jsonObject1.getString("overview")
                val rating = jsonObject1.getString("vote_average")
                val id = jsonObject1.getString("id")
                val moviesdata = MoviesData(title, popularity, poster, orgTitle, release, overview, rating, id)
                list.add(moviesdata)
            }
            moviesadapter.movieslist = list
            recyclerView.adapter = moviesadapter
        } catch (e: JSONException) {
            e.printStackTrace()
        }

    }

}

片段资源文件

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    tools:context="com.example.srilakshmibomireddy.moviesdetailsapp.Fragments.Popular">


    <android.support.v7.widget.RecyclerView
        app:layoutManager="android.support.v7.widget.GridLayoutManager"
        android:id="@+id/popular_posters"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</FrameLayout>

我的适配器:

package com.example.srilakshmibomireddy.movies

import android.content.Context
import android.support.v7.widget.RecyclerView
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.Toast
import com.squareup.picasso.Picasso

class MoviesAdapter : RecyclerView.Adapter<MoviesAdapter.MyViewHolder> {
    var context: Context
    var movieslist: List<MoviesData>? = null
        set(value) {
            field = value
        }

    constructor(context: Context) : super() {
        this.context = context
    }

    override fun getItemCount(): Int {
       return movieslist!!.size
    }
    override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
        var moviedata : MoviesData = movieslist!!.get(position)
        var s : String ="http://image.tmdb.org/t/p/w342".plus(moviedata.poster)
        Toast.makeText(context,s,Toast.LENGTH_SHORT).show()
        Picasso.get().load(s).into(holder.movie_poster)
    }

    override fun onCreateViewHolder(p0: ViewGroup, p1: Int): MyViewHolder {
        var view :View = LayoutInflater.from(p0.context).inflate(R.layout.movies_adapter,p0,false)
        return  MyViewHolder(view)
    }

    class MyViewHolder(view :View) :RecyclerView.ViewHolder(view) {
        var movie_poster : ImageView = view.findViewById(R.id.movie_poster)
    }
}

适配器资源文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <ImageView
        android:id="@+id/movie_poster"
        android:layout_width="match_parent"
        android:src="@mipmap/ic_launcher"
        android:layout_height="300dp"
        android:padding="2dp"
        android:scaleType="fitXY"
        android:contentDescription="@string/movie_poster"/>
</LinearLayout>

有人可以帮我吗?

当我不得不在图像中使用“Https”时,我正在使用“Http”link

改变

var s : String ="http://image.tmdb.org/t/p/w342".plus(moviedata.poster)

var s : String ="https://image.tmdb.org/t/p/w342".plus(moviedata.poster) 

解决了我的问题