class MainActivity : AppCompatActivity() {private lateinit var binding: ActivityMainBindingprivate lateinit var viewMergeBinding: ViewMergeBindingoverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)binding = ActivityMainBinding.inflate(layoutInflater)setContentView(binding.root)viewMergeBinding = ViewMergeBinding.bind(binding.root)viewMergeBinding.textView3.text = "textView3"}
}
在Activity基類中使用
基類BaseActivity
abstract class BaseActivity<T : ViewBinding> : AppCompatActivity() {protected lateinit var binding: Tabstract fun initBinding(): Tabstract fun init()override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)binding = initBinding()setContentView(binding.root)init()}
}
子類MainActivity
class MainActivity : BaseActivity<ActivityMainBinding>() {override fun initBinding() = ActivityMainBinding.inflate(layoutInflater)override fun init() {binding.textView1.text = "textView1"}
}
class FirstFragment : Fragment() {private var _binding: FragmentFirstBinding? = nulloverride fun onCreateView(inflater: LayoutInflater,container: ViewGroup?,savedInstanceState: Bundle?): View? {_binding =FragmentFirstBinding.inflate(LayoutInflater.from(container?.context), container, false)return _binding?.root}override fun onDestroyView() {_binding = nullsuper.onDestroyView()}
}
Fragment基類用法
布局文件同上
調(diào)用方式
class FirstFragment : BaseFragment<FragmentFirstBinding>() {override fun initBinding() = FragmentFirstBinding.inflate(layoutInflater)override fun init() {_binding?.textView1?.text="textView1"}
}
RecyclerView中使用 篇幅有限,只列出有變化的Adapter類:
class RvAdapter : RecyclerView.Adapter<RvAdapter.MyViewHolder>() {private var mDataList = mutableListOf<String>()private lateinit var mContext: Contextoverride fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {mContext = parent.contextval itemBinding =ItemLayoutBinding.inflate(LayoutInflater.from(parent.context), parent, false)return MyViewHolder(mContext, itemBinding)}override fun onBindViewHolder(viewHolder: MyViewHolder, position: Int) {val data = mDataList[position]viewHolder.bind(data)}fun setData(dataList: List<String>) {mDataList.clear()mDataList.addAll(dataList)notifyDataSetChanged()}override fun getItemCount(): Int = mDataList.sizeclass MyViewHolder(private var context: Context, private var itemBinding: ItemLayoutBinding) :RecyclerView.ViewHolder(itemBinding.root) {fun bind(data: String) {//更新UI上nameTv展示內(nèi)容itemBinding.nameTv.text = data//設(shè)置點(diǎn)擊事件itemBinding.root.setOnClickListener {Toast.makeText(context, data, Toast.LENGTH_SHORT).show()}}}
}