【发布时间】:2020-11-14 19:50:54
【问题描述】:
我正在使用 Picasso 获取图像并在 recyclerview 中显示,但我不知道如何在 recyclerview 中获取和设置图像。我在堆栈上准备了很多问题,但我不明白。
这里是 mainActivity
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_food__ngo_)
var item = ArrayList<dumy_item_list>()
var progressBar2 = findViewById<ProgressBar>(R.id.progressBar2)
var away_recycler = findViewById<RecyclerView>(R.id.away_recycler)
away_recycler.layoutManager = GridLayoutManager(applicationContext, 1)
var url = "https://apps.faizeqamar.website/charity/api/organizations"
var rq: RequestQueue = Volley.newRequestQueue(this)
var sr = StringRequest(
Request.Method.GET, url, Response.Listener { response ->
var jsonResponse = JSONObject(response)
var jsonArray: JSONArray = jsonResponse.getJSONArray("data")
for (i in 0..jsonArray.length() - 1) {
var jsonObject: JSONObject = jsonArray.getJSONObject(i)
var name = jsonObject.getString("ngo_name")
var org_id = jsonObject.getString("ngo_id")
var ngo_phone = jsonObject.getString("ngo_phone")
AppPrefrence.ngoId = org_id
item.add(dumy_item_list(name,ngo_phone))
}
var adaptor = food_adapter(item, applicationContext)
away_recycler.adapter = adaptor
progressBar2?.visibility = View.INVISIBLE
},
Response.ErrorListener { error ->
var message: String? = null
if (error is NetworkError) {
message = "Cannot connect to Internet...Please check your connection!"
} else if (error is ServerError) {
message =
"The server could not be found. Please try again after some time!!"
} else if (error is AuthFailureError) {
message = "Cannot connect to Internet...Please check your connection!"
} else if (error is ParseError) {
message = "Parsing error! Please try again after some time!!"
} else if (error is NoConnectionError) {
message = "Cannot connect to Internet...Please check your connection!"
} else if (error is TimeoutError) {
message = "Connection TimeOut! Please check your internet connection."
}
Toast.makeText(applicationContext,message, Toast.LENGTH_LONG).show()
})
rq.add(sr)
}
这里是适配器类
class food_adapter(data: ArrayList<dumy_item_list>, var context: Context) :
RecyclerView.Adapter<food_adapter.viewHolder>() {
var data: List<dumy_item_list>
init {
this.data = data
this.context = context;
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): food_adapter.viewHolder {
var layout = LayoutInflater.from(context).inflate(R.layout.dumy_item, parent, false)
return viewHolder(layout)
}
override fun onBindViewHolder(viewHolder: viewHolder, position: Int) {
viewHolder.tv_dummy_name_donnor.setText(data[position].tv_dummy_name_donnor)
viewHolder.tv_dummy_phone_donnor.setText(data[position].tv_dummy_phone_donnor)
viewHolder.tv_counter.setText((position+1).toString())
viewHolder.card.setOnClickListener {
var intent = Intent(context, Food_Activity::class.java)
// intent.putExtra("name",data[position].tv_dummy_name_donnor)
// intent.putExtra("about",data[position].about)
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
startActivity(context, intent, null)
}
}
override fun getItemCount(): Int {
return data.size
}
class viewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
internal var tv_dummy_name_donnor: TextView
internal var tv_dummy_phone_donnor: TextView
internal var img_ngo: ImageView
internal var tv_counter: TextView
internal var card: CardView
init {
tv_dummy_name_donnor = itemView.findViewById(R.id.tv_dummy_name_donnor)
tv_dummy_phone_donnor = itemView.findViewById(R.id.tv_dummy_phone_donnor)
img_ngo = itemView.findViewById(R.id.img_ngo)
tv_counter = itemView.findViewById(R.id.tv_counter)
card = itemView.findViewById(R.id.card)
}
}
【问题讨论】:
-
您能否也粘贴代码,您在适配器中设置图像的位置。即展示你的毕加索实现
-
这就是我在适配器中设置图像的方式... Picasso.get().load("apps.faizeqamar.website/charity/storage/…
-
但是recyclerView中没有显示图片..图片视图是空的
-
是整个链接吗?您在 logcat 中看到 Picasso 的任何错误吗?
-
是的,这是入口链接....先生图像显示在个人资料活动中,但不显示在 recyclerView 中
标签: android android-recyclerview android-volley picasso