Skip to content

Commit 4ea9147

Browse files
author
Yevhen Babiichuk (DustDFG)
committed
Convert newpipe/fragments/list/search/Suggestion{Item,ListAdapter} to kotlin
1 parent 84687b8 commit 4ea9147

4 files changed

Lines changed: 94 additions & 126 deletions

File tree

app/src/main/java/org/schabi/newpipe/fragments/list/search/SuggestionItem.java

Lines changed: 0 additions & 32 deletions
This file was deleted.
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/*
2+
* SPDX-FileCopyrightText: 2018-2025 NewPipe contributors <https://newpipe.net>
3+
* SPDX-FileCopyrightText: 2025 NewPipe e.V. <https://newpipe-ev.de>
4+
* SPDX-License-Identifier: GPL-3.0-or-later
5+
*/
6+
7+
package org.schabi.newpipe.fragments.list.search
8+
9+
class SuggestionItem(@JvmField val fromHistory: Boolean, @JvmField val query: String) {
10+
override fun equals(other: Any?): Boolean {
11+
if (other is SuggestionItem) {
12+
return query == other.query
13+
}
14+
return false
15+
}
16+
17+
override fun hashCode() = query.hashCode()
18+
19+
override fun toString() = "[$fromHistory$query]"
20+
}

app/src/main/java/org/schabi/newpipe/fragments/list/search/SuggestionListAdapter.java

Lines changed: 0 additions & 94 deletions
This file was deleted.
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
/*
2+
* SPDX-FileCopyrightText: 2018-2025 NewPipe contributors <https://newpipe.net>
3+
* SPDX-FileCopyrightText: 2025 NewPipe e.V. <https://newpipe-ev.de>
4+
* SPDX-License-Identifier: GPL-3.0-or-later
5+
*/
6+
7+
package org.schabi.newpipe.fragments.list.search
8+
9+
import android.view.LayoutInflater
10+
import android.view.ViewGroup
11+
import androidx.recyclerview.widget.DiffUtil
12+
import androidx.recyclerview.widget.ListAdapter
13+
import androidx.recyclerview.widget.RecyclerView
14+
import org.schabi.newpipe.R
15+
import org.schabi.newpipe.databinding.ItemSearchSuggestionBinding
16+
import org.schabi.newpipe.fragments.list.search.SuggestionListAdapter.SuggestionItemHolder
17+
18+
class SuggestionListAdapter :
19+
ListAdapter<SuggestionItem, SuggestionItemHolder>(SuggestionItemCallback()) {
20+
21+
var listener: OnSuggestionItemSelected? = null
22+
23+
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): SuggestionItemHolder {
24+
return SuggestionItemHolder(
25+
ItemSearchSuggestionBinding.inflate(LayoutInflater.from(parent.context), parent, false)
26+
)
27+
}
28+
29+
override fun onBindViewHolder(holder: SuggestionItemHolder, position: Int) {
30+
val currentItem = getItem(position)
31+
holder.updateFrom(currentItem)
32+
holder.binding.suggestionSearch.setOnClickListener {
33+
listener?.onSuggestionItemSelected(currentItem)
34+
}
35+
holder.binding.suggestionSearch.setOnLongClickListener {
36+
listener?.onSuggestionItemLongClick(currentItem)
37+
true
38+
}
39+
holder.binding.suggestionInsert.setOnClickListener {
40+
listener?.onSuggestionItemInserted(currentItem)
41+
}
42+
}
43+
44+
interface OnSuggestionItemSelected {
45+
fun onSuggestionItemSelected(item: SuggestionItem)
46+
47+
fun onSuggestionItemInserted(item: SuggestionItem)
48+
49+
fun onSuggestionItemLongClick(item: SuggestionItem)
50+
}
51+
52+
class SuggestionItemHolder(val binding: ItemSearchSuggestionBinding) :
53+
RecyclerView.ViewHolder(binding.getRoot()) {
54+
fun updateFrom(item: SuggestionItem) {
55+
binding.itemSuggestionIcon.setImageResource(
56+
if (item.fromHistory)
57+
R.drawable.ic_history
58+
else
59+
R.drawable.ic_search
60+
)
61+
binding.itemSuggestionQuery.text = item.query
62+
}
63+
}
64+
65+
private class SuggestionItemCallback : DiffUtil.ItemCallback<SuggestionItem>() {
66+
override fun areItemsTheSame(oldItem: SuggestionItem, newItem: SuggestionItem): Boolean {
67+
return oldItem.fromHistory == newItem.fromHistory && oldItem.query == newItem.query
68+
}
69+
70+
override fun areContentsTheSame(oldItem: SuggestionItem, newItem: SuggestionItem): Boolean {
71+
return true // items' contents never change; the list of items themselves does
72+
}
73+
}
74+
}

0 commit comments

Comments
 (0)