用Kotlin语言写了一个简单的列表,为了方便看懂,用的最基础的方式
布局神马的你们都懂的,就是一个简单的RecyclerView
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.luh.myrecyclerview.MainActivity"> <android.support.v7.widget.RecyclerView android:id="@+id/rv_list" android:layout_width="match_parent" android:layout_height="match_parent"></android.support.v7.widget.RecyclerView> </RelativeLayout>
接下来基本步骤,新建一个Bean
class TestBean { var name: String? = null var sex: String? = null }
适配器的写法也很简单,其实就是一个常规写法
class MyAdapter(private val mContext: Context, private val mList: List<TestBean>?) : RecyclerView.Adapter<MyAdapter.ViewHolder>() { private val mLayoutInflater: LayoutInflater = LayoutInflater.from(mContext) private var mClickListener: OnItemClickListener? = null fun setOnItemClickListener(listener: OnItemClickListener) { this.mClickListener = listener } override fun onCreateViewHolder(viewGroup: ViewGroup, i: Int): ViewHolder { val view = mLayoutInflater.inflate(R.layout.item_test, viewGroup, false) val viewHolder = ViewHolder(view) viewHolder.layout.setOnClickListener { v -> if (mClickListener != null) { mClickListener!!.OnItemClick(v, viewHolder.adapterPosition) } } return viewHolder } override fun onBindViewHolder(viewHolder: ViewHolder, i: Int) { viewHolder.test.text = mList!![i].name } override fun getItemCount(): Int { return mList?.size ?: 0 } inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { var layout: RelativeLayout var test: TextView init { this.layout = itemView.findViewById(R.id.rl_layout) as RelativeLayout this.test = itemView.findViewById(R.id.tv_test) as TextView } } }
接下来是主界面
import android.content.Intent import android.support.v7.app.AppCompatActivity import android.os.Bundle import android.support.v7.widget.LinearLayoutManager import android.view.View import kotlinx.android.synthetic.main.activity_main.* import java.util.ArrayList class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) initView() getData() } private fun initView() { val layoutManager = LinearLayoutManager(applicationContext) layoutManager.orientation = LinearLayoutManager.VERTICAL rv_list.setHasFixedSize(true) // 设置布局管理器 rv_list.layoutManager = layoutManager } private fun getData() { val list = ArrayList<TestBean>() for (i in 0..9) { val testBean = TestBean() testBean.name = "" + i list.add(testBean) } val myAdapter = MyAdapter(applicationContext, list) rv_list.adapter = myAdapter myAdapter.setOnItemClickListener(object : OnItemClickListener { override fun OnItemClick(view: View, position: Int) { val intent = Intent() val bundle = Bundle() bundle.putString("Test", list[position].name) intent.putExtras(bundle) intent.setClass(applicationContext, SecondActivity::class.java) startActivity(intent) } }) } }
列表的点击事件写了一个接口
interface OnItemClickListener { fun OnItemClick(view: View, position: Int) }
跳转至SecondActivity
class SecondActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_second) initView() } private fun initView() { val intent = intent val bundle = intent.extras val test = bundle.getString("Test") tv_second.text = test } }
基本功能都实现了,大家看一下吧,很简单~