GameWither 개발일지 (4)

혀니앤·2021년 1월 29일
0

이모저모

목록 보기
4/18
  1. Fragment에서 recyclerview를 사용하거나 xml 파일에 접근하려고 하면 null이라고 하면서 접근이 안된다

=> Fragment에서 root로 정의되어있는 inflater에서 findViewById로 접근해주어야 한다

val root = inflater.inflate(R.layout.fragment_home, container, false)

layoutManager = LinearLayoutManager(context,LinearLayoutManager.VERTICAL,false)

root.findViewById(R.id.home_withrecycler).layoutManager=layoutManager

  1. Recycler - Fragment - Activity 클릭 이벤트 처리

    RecyclerView Adapter에서 클릭 리스너를 달아주려면, 우선 Fragment와 연결을 해주어야 한다.

그런데 Fragment는 자체적인 context가 없으므로, Activity의 context를 이용해야 한다.

따라서 adapter에 Activity의 context를 지닌 리스너를 변수로 넘겨주어야 하고,

Fragment나 리스너 인터페이스를 정의하고, Activity에서 리스너 발생 시 수행할 함수의 내부를 정의하여 값을 이용해야 한다

class WithShowAdapter(val context: Context, private val mValues: ArrayList,private val mListener: HomeFragment.OnListFragmentInteractionListener?)

: RecyclerView.Adapter<WithShowAdapter.ViewHolder>(){

private val mOnClickListener: View.OnClickListener

private lateinit var auth: FirebaseAuth

lateinit var rdb: DatabaseReference

init {

//리스너 정의하기

mOnClickListener = View.OnClickListener { v ->

val item = v.tag as String

// Notify the active callbacks interface (the activity, if the fragment is attached to

// one) that an item has been selected.

mListener?.onListFragmentInteraction(item)

}

auth = FirebaseAuth.getInstance()

}

}

//adatper 리스너 부착

override fun onAttach(context: Context) {

super.onAttach(context)

if (context is OnListFragmentInteractionListener) {

listener = context

} else {

throw RuntimeException(context.toString() + " must implement OnListFragmentInteractionListener")

}

}

override fun onDetach() {

super.onDetach()

listener = null

}

//adapter 리스너

interface OnListFragmentInteractionListener {

// TODO: Update argument type and name

fun onListFragmentInteraction(item: String?)

}

HomeFragment.kt

override fun onListFragmentInteraction(item:String?){

Toast.makeText(this,"방 번호 :"+ item,Toast.LENGTH_SHORT).show()

}

MainActivity.kt

  1. 원하는 방식으로 시간, 날짜정보 저장하는 법

val current = LocalDateTime.now()

val formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss")

val formatted = current.format(formatter)

profile
일단 시작하기

0개의 댓글