Sam
09/09/2019, 10:51 AMjava.lang.ClassCastException: java.lang.Object cannot be cast to String[]
I want to cast Object to Array of Strings.
class BlockToday(val type: TodayType,var data:Any)
enum class TodayType{
BANNER,EVENTS,CATEGORIES,TOP_SALES
}
val images = arrayListOf<String>()
val block = BlockToday(TodayType.BANNER,images)
=> bindBanner(block.data)
fun bindBanner(data:Any){
val images = data as ArrayList<String> => Crash
}
Any ideas to resolve this problem. ??? Thankswasyl
09/09/2019, 10:53 AMdata
to the function?Sam
09/09/2019, 10:55 AMwasyl
09/09/2019, 11:00 AMdata
objectSam
09/09/2019, 11:09 AMdata
have something in therewasyl
09/09/2019, 11:10 AMgetItem(position).data
? What’s getItem(position)
class?Object
.Sam
09/09/2019, 11:12 AMgetItem(position)
=>
abstract class BaseRecyclerAdapter<M, V : RecyclerView.ViewHolder> : RecyclerView.Adapter<V>() {
private var data = ArrayList<M>()
fun getItem(position: Int): M {
return data[position]
}
}
`
class TodayAdapter(val context: Context?) : BaseRecyclerAdapter<BlockToday, BlockTodayHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BlockTodayHolder {
val inflate = when (viewType) {
TodayType.TOP_SALES.ordinal -> R.layout.item_top_sale
TodayType.CATEGORIES.ordinal -> R.layout.item_categories
TodayType.EVENTS.ordinal -> R.layout.item_events
else -> R.layout.item_banner
}
return BlockTodayHolder(LayoutInflater.from(context).inflate(inflate, parent, false))
}
override fun onBindViewHolder(holder: BlockTodayHolder, position: Int) {
when(getItem(position).type){
TodayType.TOP_SALES -> TodayType.TOP_SALES.ordinal
TodayType.CATEGORIES -> TodayType.CATEGORIES.ordinal
TodayType.EVENTS -> TodayType.EVENTS.ordinal
TodayType.BANNER -> {
holder.bindBanner(getItem(position).data)
}
}
}
wasyl
09/09/2019, 11:15 AMdata
?rkeazor
09/09/2019, 11:47 AMwasyl
09/09/2019, 11:54 AMrkeazor
09/09/2019, 11:54 AMwasyl
09/09/2019, 12:33 PMimport org.junit.Test
class BlockToday(val type: TodayType, var data: Any)
enum class TodayType {
BANNER, EVENTS, CATEGORIES, TOP_SALES
}
abstract class BaseRecyclerAdapter<M, V> {
var data = ArrayList<M>()
fun getItem(position: Int): M = data[position]
}
class BlockTodayHolder {
fun bindBanner(data: Any) {
val images = data as ArrayList<String>
println(images)
}
}
class TodayAdapter : BaseRecyclerAdapter<BlockToday, BlockTodayHolder>() {
fun onBindViewHolder(holder: BlockTodayHolder, position: Int) {
when (getItem(position).type) {
TodayType.TOP_SALES -> TodayType.TOP_SALES.ordinal
TodayType.CATEGORIES -> TodayType.CATEGORIES.ordinal
TodayType.EVENTS -> TodayType.EVENTS.ordinal
TodayType.BANNER -> {
holder.bindBanner(getItem(position).data)
}
}
}
}
class Test {
@Test
fun name() {
TodayAdapter().apply {
data = arrayListOf(
BlockToday(TodayType.BANNER, arrayListOf("element"))
)
onBindViewHolder(BlockTodayHolder(), 0)
}
}
}
data
, because it’s not an array listSam
09/10/2019, 8:32 AMwasyl
09/10/2019, 8:33 AMSam
09/10/2019, 8:36 AM