2016-02-25 8 views
5

にヌルである私は、スピナーのためArrayAdapterを拡張しました:パラメータ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 
     } 
    } 

私は例外を取得しています:

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) 

任意のアイデアを、それを修正する方法?返された値がNULL可能でなければなりません

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 
} 

+1

例外はかなり明確です。 convertViewパラメータにnullを渡しています。 – Arno

+1

このメソッドはAndroidフレームワークによって呼び出され、パラメータは実際にはnullableとして定義されているため、nullを許可する必要があります。 –

+0

@Dawidあなたのコードはここに投稿したものと同じですか?具体的には、 'convertView'パラメータは本当にnullableとして宣言されていますか? –

答えて

4

この問題は、インクリメンタルコンパイルによって発生しています。 Javaから変換した後にプロジェクトを再構築するだけでした。

0

の下にサンプルをご確認ください。

+1

それは、インクリメンタルコンパイルによって引き起こされました。 –

+0

@DawidHyży:Pls、答えとしてあなたのコメントを投稿し、それを受け入れます。同じことが起こった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 
    } 

//ビューオブジェクト(itemView)の名前を変更すると、getViewの2番目のオブジェクト(ビュー)と異なります。ビューをitemViewまたは他の名前に変更してください

+0

これはすでに解決済みです。 –