기존 Adapter와의 차이

 

기존 어댑터.

class CustomAdapter(private val dataSet : ArrayList<String>) : RecyclerView.Adapter<CustomAdapter.ViewHolder>(){

    class ViewHolder(view : View) : RecyclerView.ViewHolder(view){

        val myText : TextView

        init{
            myText = view.findViewById(R.id.myText)
        }

    }

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

        val view = LayoutInflater.from(parent.context).inflate(R.layout.text_row_item,parent,false)


        return ViewHolder(view)

    }

    override fun onBindViewHolder(holder: CustomAdapter.ViewHolder, position: Int) {

        holder.myText.text = dataSet[position]
    }

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

뷰 바인딩 어댑터.

class CustomViewAdapter (private val dataSet : ArrayList<String>) : RecyclerView.Adapter<CustomViewAdapter.ViewHolder>(){

  //이 지점에 binding이 들어감.
    class ViewHolder(binding : TextRowItemBinding) : RecyclerView.ViewHolder(binding.root){

        val myText : TextView = binding.myText



    }

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

        val view = TextRowItemBinding.inflate(LayoutInflater.from(parent.context),parent,false)


        return ViewHolder(view)

    }

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {

        holder.myText.text = dataSet[position]
    }

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

 

 

 

Activity 파일.

package com.example.adapterviewbinding.viewBinding

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.recyclerview.widget.LinearLayoutManager
import com.example.adapterviewbinding.R
import com.example.adapterviewbinding.databinding.ActivityViewBindingBinding

class ViewBindingActivity : AppCompatActivity() {

    private lateinit var binding : ActivityViewBindingBinding


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        binding = ActivityViewBindingBinding.inflate(layoutInflater)
        val view = binding.root

        val array = ArrayList<String>()

        array.add("a")
        array.add("b")
        array.add("c")
        array.add("d")
        array.add("e")
        array.add("f")
        array.add("g")
        array.add("h")
        array.add("j")
        array.add("k")

        val customViewAdapter = CustomViewAdapter(array)

        val rv = binding.rv
        rv.adapter = customViewAdapter
        rv.layoutManager = LinearLayoutManager(this)


        setContentView(view)
    }
}
 

 

 

'Android > ViewBinding' 카테고리의 다른 글

ViewBinding 사용하기.(findViewById 대체)  (0) 2022.11.21

 

 

    kotlinOptions {
        jvmTarget = '1.8'
    }
    //ViewBinding을 사용하기위해 아래코드 추가.
    buildFeatures{

        viewBinding = true

    }

}

dependencies {

    implementation 'androidx.core:core-ktx:1.7.0'
 

build.gradle에 ViewBinding 사용을 위해 코드 추가.

 

 

Activity Ex.

class MainActivity : AppCompatActivity() {

    private lateinit var binding : ActivityMainBinding


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        binding = ActivityMainBinding.inflate(layoutInflater)
        val view = binding.root
        setContentView(view)

        binding.testText.text = "이것은 변경된 텍스트."
      
    }
}
 

Fragment Ex.

class TestFragment : Fragment() {

    private var _binding : FragmentTestBinding? = null

    private val binding get() = _binding!!

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

    }

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        _binding = FragmentTestBinding.inflate(inflater,container,false)
        val view = binding.root

        binding.fragmentText.text = "이것은 fragment Text"


        return view
    }


}
 

 

 

 

    kotlinOptions {
        jvmTarget = '1.8'
    }
    //ViewBinding을 사용하기위해 아래코드 추가.
    buildFeatures{

        viewBinding = true

    }

}

dependencies {

    implementation 'androidx.core:core-ktx:1.7.0'
 

build.gradle에 ViewBinding 사용을 위해 코드 추가.

 

 

Activity Ex.

class MainActivity : AppCompatActivity() {

    private lateinit var binding : ActivityMainBinding


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        binding = ActivityMainBinding.inflate(layoutInflater)
        val view = binding.root
        setContentView(view)

        binding.testText.text = "이것은 변경된 텍스트."
      
    }
}
 

Fragment Ex.

class TestFragment : Fragment() {

    private var _binding : FragmentTestBinding? = null

    private val binding get() = _binding!!

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

    }

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        _binding = FragmentTestBinding.inflate(inflater,container,false)
        val view = binding.root

        binding.fragmentText.text = "이것은 fragment Text"


        return view
    }


}
 

 

 

'Android > ViewBinding' 카테고리의 다른 글

ViewBinding + Adapter  (0) 2022.11.21

+ Recent posts