Skip to content

Commit 7b8ed1f

Browse files
author
Yevhen Babiichuk (DustDFG)
committed
Convert newpipe/fragments/list/search/Suggestion{Item,ListAdapter} to kotlin
1 parent 8ae5a55 commit 7b8ed1f

4 files changed

Lines changed: 82 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: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package org.schabi.newpipe.fragments.list.search
2+
3+
class SuggestionItem(@JvmField val fromHistory: Boolean, @JvmField val query: String) {
4+
override fun equals(other: Any?): Boolean {
5+
if (other is SuggestionItem) {
6+
return query == other.query
7+
}
8+
return false
9+
}
10+
11+
override fun hashCode() = query.hashCode()
12+
13+
override fun toString() = "[$fromHistory$query]"
14+
}

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

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

0 commit comments

Comments
 (0)