2017-09-02 13 views
2

私はrecyclerviewを使って投稿のリストを持っています。リストは素晴らしいですが、私はrecyclerviewで画像を追加しようとすると問題が発生します。私はグライドを使ってイメージを追加しています。私はNavigation Drawerでグライドを使ってイメージを追加することに成功しましたが、私がRecyclerviewで試してみると、私がソースとしたデフォルトイメージ以外は何も表示されません。グライドを使ってRecyclerviewで画像が表示されない

あなたはそれをインスタンス化/割り当てることはありませんので、これは私のkotlin

class InformationListActivity : MainActivity() { 
private val glide: RequestManager? = null 

override fun onCreate(savedInstanceState: Bundle?) { 
    super.onCreate(savedInstanceState) 
    setContentView(R.layout.activity_information_list) 

    val toolbar = findViewById<View>(R.id.toolbar) as Toolbar 
    setSupportActionBar(toolbar) 
    supportActionBar!!.setDisplayHomeAsUpEnabled(true) 
    supportActionBar!!.setDisplayShowHomeEnabled(true) 

    val user = FirebaseAuth.getInstance().currentUser 
    val uName = user?.displayName 
    val uEmail = user?.email 
    val uPhotoUrl = user?.photoUrl 
    user?.uid 

    val navigationView = findViewById<View>(R.id.nav_view) as NavigationView 
    navigationView.setNavigationItemSelectedListener(this) 
    val headerView = navigationView.getHeaderView(0) 

    val navName = headerView.findViewById<TextView>(R.id.navName) 
    navName.text = uName 
    val navEmail = headerView.findViewById<TextView>(R.id.navEmail) 
    navEmail.text = uEmail 
    val navImage = headerView.findViewById<ImageView>(R.id.navImage) 
    Glide.with(this).load(uPhotoUrl).into(navImage) 

    window.clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS) 

    val signOut = findViewById<View>(R.id.btnSignOut) as LinearLayout 
    signOut.setOnClickListener { 
     FirebaseAuth.getInstance().signOut() 
     val goToLogin = Intent([email protected], LoginActivity::class.java) 
     startActivity(goToLogin) 
    } 


    val recyclerView = findViewById<View>(R.id.recycler_view) as RecyclerView 
    recyclerView.setHasFixedSize(true) 
    recyclerView.layoutManager = LinearLayoutManager(this) 
    val myref = FirebaseDatabase.getInstance().reference.child("/posts") 
    val recyclerAdapter = object : FirebaseRecyclerAdapter<Post, InformationListActivity.PostViewHolder>(
      Post::class.java, 
      R.layout.information_model, 
      InformationListActivity.PostViewHolder::class.java, 
      myref 
    ) { 
     override fun populateViewHolder(viewHolder: InformationListActivity.PostViewHolder, model: Post, position: Int) { 
      val data_empty = findViewById<View>(R.id.data_empty) as TextView 
      data_empty.visibility = View.GONE 
      viewHolder.run { 
       glide?.let { setmPostImageUrl(it,model.getmPostImageUrl()) } 
       setmPostTitle(model.getmPostTitle()) 
       setmPostDescription(model.getmPostDescription()) 
       viewHolder.setItemClickListener(object : ItemClickListener { 
        override fun onItemClick(pos: Int) { 
         //OPEN DETAIL ACTIVITY 
         openInformationDetail(model.getmPostImageUrl(), model.getmPostTitle(), model.getmPostDescription()) 
        } 
       }) 
      } 
     } 
    } 
    recyclerView.adapter = recyclerAdapter 
} 

private fun openInformationDetail(vararg details: String) { 
    val i = Intent(this, InformationDetailActivity::class.java) 
    i.putExtra("POSTIMAGEURL_KEY", details[0]) 
    i.putExtra("POSTTITLE_KEY", details[1]) 
    i.putExtra("POSTDESCRIPTION_KEY", details[2]) 
    startActivity(i) 
} 

class PostViewHolder(mView: View) : RecyclerView.ViewHolder(mView), View.OnClickListener { 
    private var modelImgPost: ImageView = mView.findViewById(R.id.imgPost) 
    private var modelPostTitle: TextView = mView.findViewById(R.id.modelPostTitle) 
    private var modelPostDescription: TextView = mView.findViewById(R.id.modelPostDescription) 
    private var btnMore: Button = mView.findViewById(R.id.btnMore) 
    private lateinit var itemClickListener: ItemClickListener 

    init { 
     btnMore.setOnClickListener(this) 
    } 

    fun setItemClickListener(itemClickListener: ItemClickListener) { 
     this.itemClickListener = itemClickListener 
    } 

    override fun onClick(view: View) { 
     this.itemClickListener.onItemClick(this.layoutPosition) 
    } 

    fun setmPostImageUrl(glide: RequestManager, mPostImageUrl: String) { 
     glide.load(Uri.parse(mPostImageUrl)).into(modelImgPost) 
    } 

    fun setmPostTitle(mPostTitle: String) { 
     modelPostTitle.text = mPostTitle 
    } 

    fun setmPostDescription(mPostDescription: String) { 
     modelPostDescription.text = mPostDescription 
    } 
} 
+0

を活動フィールドにグライド保管しないでください。あなたはGlideを使用サイトで得ることができます:Glide.with(modelImgPost) '。 –

答えて

2
if (glide != null) { 
    setmPostImageUrl(glide, model.getmPostImageUrl()) 
} 

グライドはヌルです。

private val glide: RequestManager? = null 

private var glide: RequestManager? = null 

てみませんかonCreate()で:

は、この行を置き換え

glide = Glide.with(this) 
+0

if文を削除しても何も表示されません。 –

+0

@EMFarih質問のコードを今更新してください。 – FWeigl

+0

大丈夫、完了... –

関連する問題