android-studio - 使用 kotlin 在 android 中创建自定义微调器适配器
问题描述
我正在尝试使用自定义适配器制作一个微调器,以显示带有如下文本的图像
但我有很多未解决的参考,所以我认为我做错了什么
我有两个片段微调器在第二个片段 custome_spinner.xml 是自定义布局文件
安卓工作室 3.1.2
kotlin_version = '1.2.30'
毕业:3.1.2
customeSpinnerAdapter.kt
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.BaseAdapter
class customeSpinnerAdapter : BaseAdapter{
override fun getItem(p0: Int): Any {
return flag.length
}
override fun getItemId(p0: Int): Long {
return null
}
override fun getCount(): Int {
return 0
}
val country:String
val flag:String
fun customeSpinnerAdapter(context:Context,name:String,image:String){
this.country = name
this.flag = image
val inflater = LayoutInflater.from(context)
}
override fun getView(p0: Int, p1: View?, p2: ViewGroup?): View {
val view = inflater.inflate(R.layout.custome_spinner)
spinner_image.setImageResource(flag)
spinner_country.setText(country)
return view
}
}
custome_spinner.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:id="@+id/spinner_image"
android:layout_width="50dp"
android:layout_height="50dp"
android:padding="5dp"
android:src="@drawable/us" />
<TextView
android:id="@+id/spinner_country"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:layout_gravity="center"
android:text="Custom Text"
android:textColor="#000" />
</LinearLayout>
the widget inside fragment_second.xml
<Spinner
android:id="@+id/spinner"
android:layout_width="368dp"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="12dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/from_textView" />
解决方案
你的问题在于customeSpinnerAdapter.kt
customeSpinnerAdapter.kt
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.BaseAdapter
class customeSpinnerAdapter : BaseAdapter{
override fun getItem(p0: Int): Any {
return flag.length
}
override fun getItemId(p0: Int): Long {
return null
}
override fun getCount(): Int {
return 0
}
val country:String
val flag:String
//Add this
val inflater : LayoutInflater
fun customeSpinnerAdapter(context:Context,name:String,image:String){
this.country = name
this.flag = image
//val inflater = LayoutInflater.from(context)
inflater = LayoutInflater.from(context)
}
override fun getView(p0: Int, p1: View?, p2: ViewGroup?): View {
val view = inflater.inflate(R.layout.custome_spinner)
spinner_image.setImageResource(flag)
spinner_country.setText(country)
return view
}
}
推荐阅读
- python - Python OpenCV cv2.threshold 在图像(jpg)中找不到水平直线/行
- apache-spark - 如何在 HDP (Hothonworks) 上运行 Spark 3.0.0?
- amazon-product-api - 如何将亚马逊会员链接归因于亚马逊产品 API?
- sql - 如何删除与原始重复的行?
- powershell - 将 Broadcom 模块与 Powershell 连接
- highcharts - 时刻 js 与 highstock
- php - Symfony 5 - PhpUnit Panther:此版本的 ChromeDriver 仅支持 Chrome 版本 80
- java - 一键编辑距离
- c# - 只要在文本框中单击用户,有没有办法使工具提示保持可见?
- python - 如果不是绝对必要的,是否应该使用临时(非成员)变量?