У меня есть повторный просмотр в фрагменте. Когда я щелкаю по пункту ресайклера, цвет фона меняется. Но когда я перехожу к другому занятию и возвращаюсь, цвет нажатой кнопки остается.
Я позвонил adapter.notifyDataSetChanged()
, но ничего не произошло.
Вот мой класс RecyclerView.ViewHolder
class GreetingsView(itemView: View) : RecyclerView.ViewHolder(itemView) {
var imageView: ImageView? = null
var category: TextView? = null
var frameLayout: FrameLayout? = null
var context: Context? = itemView.context
private var listOfGreetings: List<GreetingModel>? = null
init {
imageView = itemView.findViewById(R.id.greetingImage)
category = itemView.findViewById(R.id.greetingCategory)
frameLayout = itemView.findViewById(R.id.card_view)
this.listOfGreetings = listOfGreetings
itemView.setOnClickListener {
val position = adapterPosition
if (position != RecyclerView.NO_POSITION) {
frameLayout?.setBackgroundColor(Color.BLACK)
val intent = Intent(context, GridGreetingListActivity::class.java)
intent.putExtra("position", position)
context?.startActivity(intent)
}else {
frameLayout?.setBackgroundColor(Color.WHITE)
}
}
}
}
Вот мой фрагмент
class CategoryFragment : Fragment(), SendItemPositionListener {
var greetingAdapter: GreetingAdapter? = null
var listOfGreetings: ArrayList<GreetingModel>? = arrayListOf()
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
listOfGreetings?.apply {
add(0, GreetingModel("Greeting 1", R.drawable.img_1))
add(1,
GreetingModel("Greeting 2", R.drawable.greeting_1)
)
add(2, GreetingModel("Greeting 3", R.drawable.img_3))
add(3, GreetingModel("Greeting 4", R.drawable.img_4))
add(4, GreetingModel("Greeting 5", R.drawable.img_5))
add(5, GreetingModel("Greeting 6", R.drawable.img_6))
add(6, GreetingModel("Greeting 7", R.drawable.img_7))
add(7, GreetingModel("Greeting 8", R.drawable.img_8))
}
val view = inflater.inflate(R.layout.fragment_category, container, false)
//Get the recyclerView from the inflated view.
val recyclerView = view.findViewById<RecyclerView>(R.id.recyclerView)
val manager = LinearLayoutManager(activity)
recyclerView.setHasFixedSize(true)
recyclerView.layoutManager = manager
greetingAdapter = GreetingAdapter(activity!!, listOfGreetings!!.toList())
recyclerView.adapter = greetingAdapter
greetingAdapter!!.notifyDataSetChanged()
return view
}
Я не уверен, что звоню notifyDataSetChanged()
в нужном месте. Надеюсь, вы поможете!