0
点赞
收藏
分享

微信扫一扫

【Android】ListView常规写法


ListView常规用法

代码

  • Menifest:
<activity android:name=".listView.ListViewActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
  • Layout:

​fruit_listview_item:​

<?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="60dp">

<ImageView
android:id="@+id/fruit_image"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_gravity="center_vertical"
android:layout_marginLeft="10dp" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/fruit_name"
android:layout_gravity="center_vertical"
android:layout_marginLeft="10dp"/>

</LinearLayout>

​activity_listview_fruit:​

<?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="match_parent">

<ListView
android:id="@+id/fruit_listView"
android:layout_width="match_parent"
android:layout_height="match_parent" />

</LinearLayout>
  • Kotlin:

​Fruit:​

class Fruit(val name:String,val imageId:Int)

​ListViewAdapter:​

class ListViewAdapter(activity: Activity, private val resourceId: Int, data: List<Fruit>) :
ArrayAdapter<Fruit>(activity, resourceId, data) {

inner class ViewHolder(val fruitImage:ImageView,val fruitName:TextView)

override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
val view: View
val viewHolder: ViewHolder
if(convertView== null){
view=LayoutInflater.from(context).inflate(resourceId, parent, false)
val fruitImage:ImageView=view.findViewById(R.id.fruit_image)
val fruitName:TextView=view.findViewById(R.id.fruit_name)
viewHolder=ViewHolder(fruitImage,fruitName)
view.tag=viewHolder
}else{
view= convertView
viewHolder=view.tag as ViewHolder
}
val fruit = getItem(position)//获取当前项的Fruit实例
fruit?.let {
viewHolder.fruitImage.setImageResource(it.imageId)
viewHolder.fruitName.text = it.name
}
return view
}
}

​ListViewActivity:​

class ListViewActivity:AppCompatActivity() {
private val fruitList=ArrayList<Fruit>()
lateinit var fruitBinding: ActivityListviewFruitBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
fruitBinding= ActivityListviewFruitBinding.inflate(layoutInflater)
setContentView(fruitBinding.root)
initFruits()
val adapter=ListViewAdapter(this, R.layout.fruit_listview_item,fruitList)
fruitBinding.fruitListView.adapter=adapter
fruitBinding.fruitListView.setOnItemClickListener { _, _, position, _ ->
val fruit=fruitList[position]
Toast.makeText(this,fruit.name,Toast.LENGTH_SHORT).show()
}
}

private fun initFruits() {
repeat(2){
fruitList.apply {
add(Fruit("Apple",R.drawable.fruit))
add(Fruit("Pear",R.drawable.fruit))
add(Fruit("Banana",R.drawable.fruit))
add(Fruit("Watermelon",R.drawable.fruit))
add(Fruit("Orange",R.drawable.fruit))
add(Fruit("Grape",R.drawable.fruit))
add(Fruit("Pineapple",R.drawable.fruit))
add(Fruit("Strawberry",R.drawable.fruit))
add(Fruit("Cherry",R.drawable.fruit))
add(Fruit("Mango",R.drawable.fruit))
}
}
}
}

效果

【Android】ListView常规写法_listview

纯文字写法:

  • Kotlin:
class SecondActivity : AppCompatActivity() {
private lateinit var secondBinding: ActivitySecondBinding
private val data = listOf("Apple","Banana","Orange","Watermelon","Pear","Grape","Pineapple","Strawberry",
"Cherry","Mango","Apple","Banana","Orange","Watermelon","Pear","Grape","Pineapple","Strawberry")

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
secondBinding = ActivitySecondBinding.inflate(layoutInflater)
setContentView(secondBinding.root)

val adapter=ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,data)
secondBinding.secondListView.adapter=adapter
}
}


举报

相关推荐

0 条评论