Android 如何使用recycleview创建多个按钮
我的应用程序使用recycleview显示多个ImageButton,一切正常,我想要的是,当一个人单击ImageButton时,他们将被定向到活动“monactivitefinal”,并保留“article.ifram”的内容,以便我在这个新活动中使用它。 所有Imagebutton重定向到同一个活动“monactivitefinal”,只有变量“article.ifram”发生更改 这是我的代码:Android 如何使用recycleview创建多个按钮,android,android-studio,Android,Android Studio,我的应用程序使用recycleview显示多个ImageButton,一切正常,我想要的是,当一个人单击ImageButton时,他们将被定向到活动“monactivitefinal”,并保留“article.ifram”的内容,以便我在这个新活动中使用它。 所有Imagebutton重定向到同一个活动“monactivitefinal”,只有变量“article.ifram”发生更改 这是我的代码: class Article(var id: Int, var nom: String, var
class Article(var id: Int, var nom: String, var lienimg: String, var ifram: String){
}
class ArticleAdapter(var articles: ArrayList<Article>) : RecyclerView.Adapter<ArticleAdapter.MyViewHolder>(){
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
var vue=LayoutInflater.from(parent.context).inflate(
R.layout.listevisitess,
parent,
false
)
return MyViewHolder(vue)
}
override fun getItemCount(): Int {
return articles.size
}
override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
var article = articles.get(position)
holder.nomvisite.setText(article.nom)
holder.lieimgvisite.setText(article.lienimg)
holder.ifram.setText(article.ifram)
var urldelimg:String = article.lienimg
Glide.with(holder.imagedubloc.context).load(urldelimg).into(holder.imagedubloc)
}
class MyViewHolder(var vue: View):RecyclerView.ViewHolder(vue){
var nomvisite=vue.findViewById<TextView>(R.id.nom_visite)
var lieimgvisite=vue.findViewById<TextView>(R.id.lienimg)
var ifram=vue.findViewById<TextView>(R.id.ifram)
var imagedubloc=vue.findViewById<ImageView>(R.id.imagedubloc)
}
}
类文章(var-id:Int,var-nom:String,var-lienimg:String,var-ifram:String){
}
类ArticleAdapter(var articles:ArrayList):RecyclerView.Adapter(){
重写CreateViewHolder(父级:ViewGroup,viewType:Int):MyViewHolder{
var vue=LayoutInflater.from(parent.context).充气(
R.layout.listedvisitess,
父母亲
假的
)
返回MyViewHolder(vue)
}
重写getItemCount():Int{
退货物品.尺码
}
覆盖onBindViewHolder(holder:MyViewHolder,位置:Int){
var article=articles.get(位置)
holder.nomvisite.setText(article.nom)
holder.lieimgvisite.setText(第条留置权)
holder.ifram.setText(article.ifram)
var urldelimg:String=article.lieimg
使用(holder.imagedubloc.context)滑动。加载(urldelimg)。放入(holder.imagedubloc)
}
类MyViewHolder(变量vue:View):RecyclerView.ViewHolder(vue){
var nomvisite=vue.findViewById(R.id.nom_visite)
var lieimgvisite=vue.findViewById(R.id.lienimg)
变量ifram=vue.findViewById(R.id.ifram)
var imagedubloc=vue.findViewById(R.id.imagedubloc)
}
}
谢谢您可以在您的
意图中传递一个用于导航到新活动的额外字段,您的代码如下:
class ArticleAdapter(var articles: ArrayList<Article>) : RecyclerView.Adapter<ArticleAdapter.MyViewHolder>(){
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
var vue=LayoutInflater.from(parent.context).inflate(
R.layout.listevisitess,
parent,
false
)
return MyViewHolder(vue)
}
override fun getItemCount(): Int {
return articles.size
}
override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
var article = articles.get(position)
holder.nomvisite.setText(article.nom)
holder.lieimgvisite.setText(article.lienimg)
holder.ifram.setText(article.ifram)
var urldelimg:String = article.lienimg
Glide.with(holder.imagedubloc.context).load(urldelimg).into(holder.imagedubloc)
// here you pass your "ifram" value to the activity you're navigating to
holder.imagedubloc.setOnClickListener {
startActivity(Intent(holder.vue.context,monactivitefinal::class.java).apply {
putExtra("ifram", article.ifram)
})
}
}
class MyViewHolder(var vue: View):RecyclerView.ViewHolder(vue){
var nomvisite=vue.findViewById<TextView>(R.id.nom_visite)
var lieimgvisite=vue.findViewById<TextView>(R.id.lienimg)
var ifram=vue.findViewById<TextView>(R.id.ifram)
var imagedubloc=vue.findViewById<ImageView>(R.id.imagedubloc)
}
}
您可以在Intent
中传递一个用于导航到新活动的额外字段,您的代码如下:
class ArticleAdapter(var articles: ArrayList<Article>) : RecyclerView.Adapter<ArticleAdapter.MyViewHolder>(){
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
var vue=LayoutInflater.from(parent.context).inflate(
R.layout.listevisitess,
parent,
false
)
return MyViewHolder(vue)
}
override fun getItemCount(): Int {
return articles.size
}
override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
var article = articles.get(position)
holder.nomvisite.setText(article.nom)
holder.lieimgvisite.setText(article.lienimg)
holder.ifram.setText(article.ifram)
var urldelimg:String = article.lienimg
Glide.with(holder.imagedubloc.context).load(urldelimg).into(holder.imagedubloc)
// here you pass your "ifram" value to the activity you're navigating to
holder.imagedubloc.setOnClickListener {
startActivity(Intent(holder.vue.context,monactivitefinal::class.java).apply {
putExtra("ifram", article.ifram)
})
}
}
class MyViewHolder(var vue: View):RecyclerView.ViewHolder(vue){
var nomvisite=vue.findViewById<TextView>(R.id.nom_visite)
var lieimgvisite=vue.findViewById<TextView>(R.id.lienimg)
var ifram=vue.findViewById<TextView>(R.id.ifram)
var imagedubloc=vue.findViewById<ImageView>(R.id.imagedubloc)
}
}
您需要添加侦听器来处理onClick事件,然后ButtonListActivity需要实现这个接口并像这样初始化适配器
听众
interface ImageButtonClickListener {
fun onImageButtonClick(articleIfram: String)
}
带有按钮列表的活动
class ButtonListActivity : AppCompactActivity(), ImageButtonClickListener {
private val adapter: ArticleAdapter = ArticleAdapter(ArrayList(), this)
override fun onImageButtonClick(articleIfram: String) {
val intent = Intent(context, Monactivitefinal::class.java)
intent.putExtra("articleIfram", articleIfram)
startActivity(intent)
}
}
class ButtonListActivity : AppCompactActivity(), ImageButtonClickListener {
private val onImageButtonClick: (String) -> Unit = {
val intent = Intent(context, Monactivitefinal::class.java)
intent.putExtra("articleIfram", articleIfram)
startActivity(intent)
}
private val adapter: ArticleAdapter = ArticleAdapter(ArrayList(), onImageButtonClick)
}
你的适配器
class ArticleAdapter(
val onImageButtonClickListener: ImageButtonClickListener,
var articles: ArrayList<Article>
) : RecyclerView.Adapter<ArticleAdapter.MyViewHolder>(){
override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
var article = articles.get(position)
imagedubloc.setOnClickListener {
onImageButtonClickListener.onImageButtonClick(article. ifram)
}
}
}
class ArticleAdapter(
val onImageButtonClickListener: (String) -> Unit,
var articles: ArrayList<Article>
) : RecyclerView.Adapter<ArticleAdapter.MyViewHolder>(){
override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
var article = articles.get(position)
imagedubloc.setOnClickListener {
onImageButtonClickListener(article. ifram)
}
}
}
你的适配器
class ArticleAdapter(
val onImageButtonClickListener: ImageButtonClickListener,
var articles: ArrayList<Article>
) : RecyclerView.Adapter<ArticleAdapter.MyViewHolder>(){
override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
var article = articles.get(position)
imagedubloc.setOnClickListener {
onImageButtonClickListener.onImageButtonClick(article. ifram)
}
}
}
class ArticleAdapter(
val onImageButtonClickListener: (String) -> Unit,
var articles: ArrayList<Article>
) : RecyclerView.Adapter<ArticleAdapter.MyViewHolder>(){
override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
var article = articles.get(position)
imagedubloc.setOnClickListener {
onImageButtonClickListener(article. ifram)
}
}
}
类适配器(
val onImageButtonClickListener:(字符串)->单位,
var文章:ArrayList
):RecyclerView.Adapter(){
覆盖onBindViewHolder(holder:MyViewHolder,位置:Int){
var article=articles.get(位置)
imagedubloc.setOnClickListener{
onImageButtonClickListener(article.ifram)
}
}
}
您需要添加侦听器来处理onClick事件,然后ButtonListActivity需要实现此接口,并像这样初始化适配器
听众
interface ImageButtonClickListener {
fun onImageButtonClick(articleIfram: String)
}
带有按钮列表的活动
class ButtonListActivity : AppCompactActivity(), ImageButtonClickListener {
private val adapter: ArticleAdapter = ArticleAdapter(ArrayList(), this)
override fun onImageButtonClick(articleIfram: String) {
val intent = Intent(context, Monactivitefinal::class.java)
intent.putExtra("articleIfram", articleIfram)
startActivity(intent)
}
}
class ButtonListActivity : AppCompactActivity(), ImageButtonClickListener {
private val onImageButtonClick: (String) -> Unit = {
val intent = Intent(context, Monactivitefinal::class.java)
intent.putExtra("articleIfram", articleIfram)
startActivity(intent)
}
private val adapter: ArticleAdapter = ArticleAdapter(ArrayList(), onImageButtonClick)
}
你的适配器
class ArticleAdapter(
val onImageButtonClickListener: ImageButtonClickListener,
var articles: ArrayList<Article>
) : RecyclerView.Adapter<ArticleAdapter.MyViewHolder>(){
override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
var article = articles.get(position)
imagedubloc.setOnClickListener {
onImageButtonClickListener.onImageButtonClick(article. ifram)
}
}
}
class ArticleAdapter(
val onImageButtonClickListener: (String) -> Unit,
var articles: ArrayList<Article>
) : RecyclerView.Adapter<ArticleAdapter.MyViewHolder>(){
override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
var article = articles.get(position)
imagedubloc.setOnClickListener {
onImageButtonClickListener(article. ifram)
}
}
}
你的适配器
class ArticleAdapter(
val onImageButtonClickListener: ImageButtonClickListener,
var articles: ArrayList<Article>
) : RecyclerView.Adapter<ArticleAdapter.MyViewHolder>(){
override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
var article = articles.get(position)
imagedubloc.setOnClickListener {
onImageButtonClickListener.onImageButtonClick(article. ifram)
}
}
}
class ArticleAdapter(
val onImageButtonClickListener: (String) -> Unit,
var articles: ArrayList<Article>
) : RecyclerView.Adapter<ArticleAdapter.MyViewHolder>(){
override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
var article = articles.get(position)
imagedubloc.setOnClickListener {
onImageButtonClickListener(article. ifram)
}
}
}
类适配器(
val onImageButtonClickListener:(字符串)->单位,
var文章:ArrayList
):RecyclerView.Adapter(){
覆盖onBindViewHolder(holder:MyViewHolder,位置:Int){
var article=articles.get(位置)
imagedubloc.setOnClickListener{
onImageButtonClickListener(article.ifram)
}
}
}
谢谢,但我有一个错误:分类器“Context”没有伴随对象,因此必须在此处初始化,如果我使用:startActivity(holder.vue.Context,Intent(holder.imagedubloc.Context,monactivitefinal::class.java)。apply我有这个错误(在同一行中):没有为参数“p2”传递值非常抱歉,我的代码中有一个“输入错误”,我将其编辑如下:startActivity(Intent(holder.vue.context,monactivitefinal::class.java)。apply{putExtra(“ifram”,article.ifram)})
@admindunetthankyou,但我有一个错误:分类器“Context”没有伴随对象,因此必须在此处初始化,如果我使用:startActivity(holder.vue.Context,Intent(holder.imagedubloc.Context,monactivitefinal::class.java)。apply我有这个错误(在同一行中):没有为参数“p2”传递值非常抱歉,我的代码中有一个“输入错误”,我将其编辑如下:startActivity(Intent(holder.vue.context,monactivitefinal::class.java)