안드로이드 프로그래밍[Kotiln Code]/리싸이클러뷰

[Kotlin] 리싸이클러뷰 : recyclerView 프래그먼트에 구현하기.

훈츠 2020. 1. 30. 15:36
반응형

프래그먼트에서 리싸이클러뷰를 구현 하기 위해서는 액티비티와는 다르게 구성 해주어야 하는 부분들이 있어 정리 차원 및 정보 전달 차원에서 포스팅 해봅니다. 기본적으로 구현 하는 방법은 같은데, 프래그먼트 내에서 구현하는 방법만 정리 하겠습니다. 리싸이클러뷰 이전편을 참조 바랍니다. 

https://rain2002kr.tistory.com/42

 

[Kotlin] 리싸이클러뷰 : recyclerView 적용

자바에서 리싸이클러뷰를 구현하는 방법에 대해 포스팅 해놓은것이 있으나, 코틀린이라는 언어적 장점으로 비교적 간단한 방법으로 리싸이클러뷰를 구현 할수 있습니다. 코틀린 언어적 설명보다 지금 당장 구현 할..

rain2002kr.tistory.com

1. 프래그먼트 구성 

class MainFragment : Fragment() {
    val TAG = "MainFragment"
    
    private val recyclerview_main_screen: RecyclerView by lazy {
        view?.findViewById(R.id.recyclerview_main_screen) as RecyclerView
    }
    private val list by lazy {
        mutableListOf<MainViewModel>(
            MainViewModel(R.drawable.network, "전송 리스트","자동 문자 전송 정보를 저장하는 화면입니다."),
            MainViewModel(R.drawable.log, "전송 내역","자동 전송된 문자 내역을 확인하는 화면입니다."),
            MainViewModel(R.drawable.sms, "문자 보내기","문자를 전송 할수 있는 화면입니다."),
            MainViewModel(R.drawable.info, "정보","버전을 확인 할수 있습니다.")
        )
    }

    private lateinit var mainAdapter : MainViewAdapter

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,savedInstanceState: Bundle?): View? {
        val view = inflater.inflate(R.layout.fragment_main, container, false)
        return view
    }

	//onViewCreated 에서 구현 
    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        recyclerview_main_screen.setHasFixedSize(true) //lazy 접근
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            recyclerview_main_screen.layoutManager = LinearLayoutManager(context)
        }
        val mainViewAdapter = MainViewAdapter(requireContext(), R.layout.sub_main_view, list)
        mainViewAdapter.setItemClickListener(object  : MainViewAdapter.ItemClickListener{
            override fun onClick(view: View, position: Int) {
                Log.d(TAG , "${position}번 리스트 선택")
                when(position){
                    0 -> (activity as MainActivity).changeFragment(REGIST_FRAG)
                    1 -> (activity as MainActivity).changeFragment(LOG_FRAG)
                    2 -> (activity as MainActivity).changeFragment(SEND_FRAG)
                    3 -> Toast.makeText(context,"버전 : 2020.01.29 ver01",Toast.LENGTH_LONG).show()
                }
            }
        })

        recyclerview_main_screen.apply {
            this.adapter = mainViewAdapter
            setHasFixedSize(true)
            val gridLayout = GridLayoutManager(context,1 )
            layoutManager = gridLayout
        }

    }

}

 

반응형