【发布时间】:2021-11-13 05:51:05
【问题描述】:
我是 firebase 新手,我想将 firebase 实时数据库中的特定值实现到我的 recycler-view 中,该视图有一个带有“Glide”库的图像视图和一个带有标题和按钮的文本视图链接到亚马逊。我尝试了来自不同 StackOverflow 问题的几个答案,但似乎没有一个适合我。
这是我的实时数据
- 我想使用 Glide 将 product_image 链接到图像视图
- 我想将 product_title 链接到文本视图
- 我想将 amazon_link 链接到一个按钮
这是我的数据类
data class affiliateRvModel(val affiliate_title : String = "",
val affiliate_image : String = "",
val affiliate_desc: String = "",
val affiliate_amazon_link: String = ""){
}
这是我的回收站视图
class AffiliateRVadapter(val context: Context, val AFFILIATE_LIST : ArrayList<affiliateRvModel>) :
RecyclerView.Adapter<AffiliateRVadapter.ViewHolder>() {
override fun onCreateViewHolder(
parent: ViewGroup,
viewType: Int
): AffiliateRVadapter.ViewHolder {
val view = LayoutInflater.from(parent.context).inflate(R.layout.affiliate_rv_layout, parent, false)
return ViewHolder(view)
}
override fun getItemCount(): Int {
return AFFILIATE_LIST.size
}
@RequiresApi(Build.VERSION_CODES.M)
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val affiliate_list : affiliateRvModel = AFFILIATE_LIST[position]
holder.affiliate_title.text = affiliate_list.affiliate_title
holder.affiliate_desc.text = affiliate_list.affiliate_desc
Glide.with(context)
.load(affiliate_list.affiliate_image)
.into(holder.affiliate_image)
val amazon_link = affiliate_list.affiliate_amazon_link
holder.store_btn1.setOnClickListener {
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(amazon_link))
context.startActivity(intent)
}
}
class ViewHolder(itemview: View): RecyclerView.ViewHolder(itemview){
val affiliate_title = itemview.findViewById<TextView>(R.id.affiliate_title)
val affiliate_desc = itemview.findViewById<TextView>(R.id.affiliate_desc)
val affiliate_image = itemview.findViewById<ImageView>(R.id.affiliate_image)
var store_btn1 = itemview.findViewById<Button>(R.id.storeBtn1)
val store_btn2 = itemview.findViewById<Button>(R.id.storeBtn2)
}
最后,这是我的 Fragment,我称之为回收站视图
val AFFILIATE_LIST : ArrayList<affiliateRvModel> = ArrayList()
var title_value : String = ""
var image_value : String = ""
var amazon_link : String = ""
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val adapter = AffiliateRVadapter(requireContext(),AFFILIATE_LIST)
affiliateRV.layoutManager = LinearLayoutManager(context, RecyclerView.VERTICAL, false)
affiliateRV.setHasFixedSize(true)
affiliateRV.adapter = adapter
realtimeFirebaseData()
storeAffiliateList(title_value, image_value, amazon_link)
}
fun realtimeFirebaseData(){
val database = FirebaseDatabase.getInstance()
val mRef = database.getReference("affiliate_store")
mRef.addValueEventListener(object : ValueEventListener {
override fun onDataChange(snapshot: DataSnapshot) {
if(snapshot.exists()){
for (list in snapshot.children){
title_value = list.child("product_title").getValue(String::class.java)!!
image_value = list.child("product_image").getValue(String::class.java)!!
amazon_link = list.child("amazon_link").getValue(String::class.java)!!
}
}
}
override fun onCancelled(error: DatabaseError) {
Log.w(TAG, "onCancelled", error.toException())
Toast.makeText(context, "$error was happened", Toast.LENGTH_SHORT).show()
}
})
}
fun storeAffiliateList(product_title : String, product_image : String, amazon_link: String){
AFFILIATE_LIST.add(affiliateRvModel(product_title
, product_image
,"هذا شرح تجريبي لوصف المنتج وما هو الشيء الذي يمكنك استخدامه فيه" +
"\n 1) بأمكانك الغاء ضهور الاعلانات في اي وقت " +
"\n 2) بأمكانك استعمال النقود لشراء عدد من الخدمات" +
"\n 3) بأمكانك استئجار اي صوت تريدة "
, amazon_link))
AFFILIATE_LIST.add(affiliateRvModel(product_title, product_image
,"هذا شرح تجريبي لوصف المنتج وما هو الشيء الذي يمكنك استخدامه فيه" +
"\n 1) بأمكانك الغاء ضهور الاعلانات في اي وقت " +
"\n 2) بأمكانك استعمال النقود لشراء عدد من الخدمات" +
"\n 3) بأمكانك استئجار اي صوت تريدة "
, amazon_link))
AFFILIATE_LIST.add(affiliateRvModel(product_title,product_image
,"هذا شرح تجريبي لوصف المنتج وما هو الشيء الذي يمكنك استخدامه فيه" +
"\n 1) بأمكانك الغاء ضهور الاعلانات في اي وقت " +
"\n 2) بأمكانك استعمال النقود لشراء عدد من الخدمات" +
"\n 3) بأمكانك استئجار اي صوت تريدة "
, amazon_link))
}
任何帮助将不胜感激
【问题讨论】:
-
这段代码中到底有什么不符合您的预期?告诉我们共享代码有什么问题。你有什么错误吗?
-
@AlexMamo 问题是当我运行代码时,firebase 数据没有显示在回收站视图中
标签: android firebase android-studio kotlin firebase-realtime-database