'ViewBinding'에 해당되는 글 1건

  1. 2021.02.25 ViewBinding

ViewBinding

개발/Android 2021. 2. 25. 10:26

app모듈 build.gradle 파일에 viewBinding 사용 설정을 한다.

 

android {

    buildFeatures{
        viewBinding = true
    }
}

 

Binding 클래스이름은 레이아웃 xml 파일명을 파스칼케이스(단어 첫글자를 대문자표기)로 변환하여 Binding을 붙인다.

 

예)

activity_main.xml => ActivityMainBinding

fragment_menu.xml => FragmentMenuBinding

contact_list_item.xml => ContactListItemBinding

 

Activity

//바인딩 변수 생성할때 초기화
val binding by lazy { ActivityMainBinding.inflate(layoutInflater) }

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
 
 	//기존
    //setContentView(R.layout.activity_main) 
    
    //변경 binding.root로 전달
	setContentView(binding.root)
}

fun initView(){
	binding.txtName.text = "Name" //사용은 기존코드에 binding. 만 앞에 추가하면 된다.
}

 

Fragment

//바인딩 변수
private lateinit var binding:FragmentMenuBinding

override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {

    //기존
    //val view = inflater.inflate(R.layout.fragment_menu, container, false)		   
    //return view
    
    //변경
    binding = FragmentMenuBinding.inflate(inflater, container, false)
    return binding.root
}

fun initEvent(){
    binding.btnUp.setOnclickListener{v:View? -> //TODO }
}

 

Adapter

class ContactListAdapter(val contacts: ArrayList<Contact>) : RecyclerView.Adapter<ContactListAdapter.ViewHolder>() {

	//기존
    //class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView){
    //변경 binding.root로 전달
    class ViewHolder(val binding: ContactListItemBinding) : RecyclerView.ViewHolder(binding.root){

        fun bindItems(contact:Contact){
        	//기존
            //val tvName = itemView.findViewById(R.id.tvName) as TextView
            //val tvNumber = itemView.findViewById(R.id.tvNumber) as TextView
            
            //변경 binding 추가
            binding.tvName.text = "("+ contact.id +") "+ contact.name
            binding.tvNumber.text = contact.number
        }
    }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ContactListAdapter.ViewHolder {

		//기존
		//val v = LayoutInflater.from(parent.context).inflate(R.layout.contact_list_item, parent, false)
		//return ViewHolder(v)

		//변경
		val binding = ContactListItemBinding.inflate(LayoutInflater.from(parent.context), parent, false))
        return ViewHolder(binding)
    }

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        holder.bindItems(contacts[position])
    }

    override fun getItemCount(): Int {
        return contacts.size
    }
}

'개발 > Android' 카테고리의 다른 글

풍선도움말 레이아웃 구현  (1) 2021.03.24
프로젝트에 NDK 모듈 추가하기  (0) 2021.03.05
Android Studio Rename Package  (0) 2021.02.24
Appium 설치  (0) 2021.02.17
Appium 실행  (0) 2021.02.17
Posted by Lumasca
,