오늘은 본격적으로 과제를 만드는 시간이다.
오늘부터 구글링을 하고, 물어보기도 하면서 참 힘들게 과제를 했다...
오늘 다 해결 못한 것이 있긴 하지만 시간이 있으니 내일 해 봐야겠다.

정리된 GitHub 링크

일단 오늘 에러가 나서 문제가 되었던 것들을 정리해 보려고 한다.
크게 두 가지가 있다.

  1. Fragment에서 RecyclerView에 데이터를 API에서 받아온 걸로 넘겨서 출력해주는 과정에서 있었던 문제
  2. 첫 번째 Fragment에서 일정 효과를 준 아이템을 따로 MainActivity로 빼서 새 Fragment에 넣고 새 RecyclerView Adapter를 이용해서 넣어주기

근데 사실 자세한 건 이 링크에 적혀있으니 설명은 생략하고 코드만 적어놔야겠다

1번 문제

private fun searchResult(query: String) {
    lifecycleScope.launch {
        val responseData = RetrofitClient.dustNetWork.getDust(
            apiKey = "KakaoAK d9e31c60db2fd236337a605b8b0128bf",
            query = query,
            sort = "accuracy",
            page = 1,
            size = 80
        )
        val documentData = responseData.documents!!
        adapter = RecyclerViewAdapter(documentData)
        recyclerViewAdapter()
    }
}

private fun recyclerViewAdapter() {
    binding.recyclerView.layoutManager = GridLayoutManager(requireContext(), 2)
    binding.recyclerView.adapter = adapter
}

Glide.with(holder.itemView)
    .load(items[position]?.thumbnailUrl)
    .into(holder.image)
holder.imageText.text = items[position]?.displaySitename
holder.imageDate.text = items[position]?.datetime

2번 문제

override fun onBindViewHolder(holder: Holder, position: Int) {
    Glide.with(holder.itemView)
        .load(items[position]?.thumbnailUrl)
        .into(holder.image)
    holder.imageText.text = items[position]?.displaySitename
    holder.imageDate.text = items[position]?.datetime

    if (itemList.contains(items[position])) {
        holder.choiceButton.setImageResource(R.drawable.home)
    } else {
        holder.choiceButton.setImageResource(R.drawable.choice_icon)
    }

    holder.choiceButton.setOnClickListener {
        if (itemList.contains(items[position])) {
            itemList.remove(items[position])
            holder.choiceButton.setImageResource(R.drawable.choice_icon)
        } else {
            itemList.add(items[position])
            holder.choiceButton.setImageResource(R.drawable.home)
        }
    }
}

fun getLikedItems(): List<Document?> {
    return itemList
}

val listData = searchFragmentAdapter.getLikedItems()

val newList = ChoiceFragment()
supportFragmentManager.beginTransaction()
    .replace(R.id.view_pager, newList)
    .setReorderingAllowed(true)
    .addToBackStack(null)
    .commit()
newList.setList(listData)
profile
김성진의 개발 관련 내용 정리 블로그

0개의 댓글