2016-02-25 5 views
5

ho esteso ArrayAdapter per filatore:parametro specificato come non nullo è nullo in ArrayAdaper

class OrderAdapter(context: Context, resource: Int, objects: List<Order>) : ArrayAdapter<Order>(context, resource, objects) { 
     override fun getView(position: Int, convertView: View?, parent: ViewGroup): View? { 
      val view = super.getView(position, convertView, parent) 
      view?.let { view.find<TextView>(android.R.id.text1).text = getItem(position).name } 
      return view 
     } 
     override fun getDropDownView(position: Int, convertView: View?, parent: ViewGroup): View? { 
      val view = super.getDropDownView(position, convertView, parent) 
      view?.let {view.find<TextView>(android.R.id.text1).text = getItem(position).name } 
      return view 
     } 
    } 

sto diventando un'eccezione:

java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter convertView 
                          at com.github.blabla.endlesss.ui.adapter.OrderAdapter.getView(OrderAdapter.kt:0) 

Delle idee come risolvere il problema?

+1

L'eccezione è abbastanza chiara. Stai passando null per il parametro convertView. – Arno

+1

Questo metodo è invocato dal framework Android e il parametro è in realtà definito come nullable, quindi è necessario consentire i valori null. –

+0

@Dawid sei sicuro che il tuo codice sia lo stesso che hai postato qui? In particolare, il parametro 'convertView' è realmente dichiarato come nullable? –

risposta

4

Questo problema è stato causato dalla compilazione incrementale. Serve solo per ricostruire il progetto dopo la conversione da Java.

0

Si prega di verificare l'esempio riportato di seguito:

override fun getDropDownView(position: Int, convertView: View?, parent: ViewGroup): View? { 
    return getCustomView(position, convertView, parent) 
} 

override fun getView(position: Int, convertView: View?, parent: ViewGroup): View? { 
    return getCustomView(position, convertView, parent) 
} 

fun getCustomView(position: Int, convertView: View?, parent: ViewGroup): View? { 
    val rootView: View? = LayoutInflater.from(context).inflate(R.layout.my_custom_view, parent, false) 
    return rootView 
} 

Il valore restituito dovrebbe essere annullabile.

+1

E 'stato causato dalla compilazione incrementale. –

+0

@ DawidHyży: Pls, inserisci questo (il tuo commento) come risposta e accettalo. Qui è successo lo stesso https://stackoverflow.com/questions/44800225/variable-is-declared-as-var-but-compiler-is-saying-it-val/44801687#44801687 –

-1
override fun getView(i: Int, view: View, parent: ViewGroup): View { 

var itemView = LayoutInflater.from(context).inflate(R.layout.item_dashbord_data, parent, false) 

     return itemView 
    } 

// cambiare il nome dell'oggetto View (itemView) differisce dal secondo oggetto getView (vista). quindi cambia vista a itemView o altro nome

+0

Questo è già stato risolto. –