ItemTouchHelper에서 RecyclerView 교체

7367 단어 AndroidKotlin
이 글은 주식회사 Y's 광고 달력 25일째 되는 글입니다.
이것은 Kotlin이 안드로이드를 개발하는 초보적인 내용이다.
  
긴 클릭으로 RecyclerView 내의 View를 교체하고 싶을 때의 한 가지 방법으로 Item Touch Helper를 사용하면 간단하게 구현할 수 있습니다!말하고 싶어요.↓ 같은 인상.
이렇게 배열하다

드래그

손가락을 놓자마자 바꾸다

배포 보기


RecyclerView 및 GridLayoutManager를 사용하여 정렬합니다.
        // 30個のViewを作成
        val data = ArrayList<String>()
        for (number in 1..30) data.add(number.toString())

        // GridLayoutManagerで横幅を5に
        val recycler: RecyclerView = findViewById(R.id.recycler)
        val adapter = Adapter(data)
        recycler.adapter = adapter
        recycler.layoutManager = GridLayoutManager(this, 5)
여기까지.
30개의 뷰가 구성되어 있습니다.

ItemTouchHelper에서 교체


긴 헤드가 배열 정도를 변경하는 경우 ItemTouchHelper간단한 계산기를 사용하여 쉽게 실현할 수 있다.
        val touchHelper = ItemTouchHelper(object : ItemTouchHelper.SimpleCallback(
                ItemTouchHelper.UP or ItemTouchHelper.DOWN
             or ItemTouchHelper.RIGHT or ItemTouchHelper.LEFT, 0) {
           // ここで指定した方向にのみドラッグ可能

            override fun onMove(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder, target: RecyclerView.ViewHolder): Boolean {

                val from = viewHolder.adapterPosition
                val to = target.adapterPosition

                val data = adapter.data.removeAt(from)
                adapter.data.add(to, data)

                adapter.notifyItemMoved(from, to)

                return true
            }

            override fun onSwiped(viewHolder: RecyclerView.ViewHolder?, direction: Int) {
                // スワイプで削除する場合はここ
            }
        })

        touchHelper.attachToRecyclerView(recycler)
        recycler.addItemDecoration(touchHelper)
        // ここを忘れると動かないので注意
  
이것만 추가하면 드래그를 통해 쉽게 이동할 수 있습니다!

  

  

좋은 웹페이지 즐겨찾기