Android

[안드로이드/Fragment] ListFragment

gangmini 2023. 4. 22. 23:25
반응형

ListFragment

  • Fragment 내에서 ListView를 사용할 경우 보다 편리하데 구성할 수 있도록 제공되는 프래그먼트
  • ListFragment는 자신이 관리하고 있는 뷰 안에 id 가 @android:id/list 로 설정되어 있는 ListView를 자동으로 찾아서 관리
class SubFragment : ListFragment() {

    private lateinit var sub_frag_binding: FragmentSubBinding

    val data1 = arrayOf("항목1","항목2","항목3","항목4","항목5","항목6","항목7")

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

        sub_frag_binding = FragmentSubBinding.inflate(layoutInflater)
        val view = sub_frag_binding.root

        // 자체적으로 listAdapter 라는 프로퍼티 가짐
        listAdapter = ArrayAdapter<String>(activity as MainActivity, android.R.layout.simple_list_item_1, data1)


        return view
    }

    // 리스트뷰의 항목을 터치했을 때 호출되는 메서드 제공
    override fun onListItemClick(l: ListView, v: View, position: Int, id: Long) {
        super.onListItemClick(l, v, position, id)
        // position : 항목 인덱스 번호

        sub_frag_binding.textView.text = data1[position]
    }
}

 

[MainActivity.kt]

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    binding = ActivityMainBinding.inflate(layoutInflater) // 뷰바인딩 객체
    val view = binding.root //뷰바인딩을 통해 레이아웃과 뷰가 결합 -> .root 를 통해 View 객체만를 뽑아내는(?)
    setContentView(view)

    val subFragment = SubFragment()
    val tran = supportFragmentManager.beginTransaction()
    tran.replace(R.id.container1, subFragment)
    tran.commit()

}
반응형