2017-01-25 10 views
0

나는 recyclerView를 구현하는 기본 Android 앱에서 Anko를 사용하고 있습니다. onCreateViewHolder() 메서드에서 형식 불일치를 말하는 컴파일 오류가 발생합니다. 아래 코드는 다른 모든 것이 좋습니다.Anko를 사용하면 형식이 일치하지 않습니다. 오류가 발생했습니다. AnkoContext <ViewGroup> Found AnkoContext <Context>

class ListAdapter(val arrayList: ArrayList<String> = ArrayList<String>()) : RecyclerView.Adapter<Holder>() { 

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): Holder? { 

     //type Mismatch error required AnkoContext<ViewGroup> Found AnkoContext<Context> 
     return Holder(ItemUI().createView(AnkoContext.create(parent!!.context))) 

    } 

    override fun onBindViewHolder(holder: Holder, position: Int) { 
     val item = arrayList.get(position) 
     holder.bind(item) 
    } 

    override fun getItemCount(): Int { 
     return arrayList.size 
    } 

} 

class ItemUI : AnkoComponent<ViewGroup> { 
    override fun createView(ui: AnkoContext<ViewGroup>): View { 
     return with(ui) { 

      verticalLayout { 
       lparams(width = matchParent, height = dip(48)) 
       horizontalPadding = dip(16) 

       var name=textView { 
        id = 7 
        singleLine = true 
        textSize = 16f 
       } 
       name.onClick { 
        toast("Hi, ${name.text}!") 
       } 
      } 
     } 
    } 
} 

class Holder(itemView: View) : RecyclerView.ViewHolder(itemView){ 
    val name: TextView = itemView.find(1) 

    fun bind(nm: String) { 
     name.text = nm 
    } 
} 

내가 잘못된 구문 또는 recyclerview의 구현을 사용하고 있으면 알려 주시기 바랍니다는

답변

2

늦은 답변 죄송합니다,하지만 난 것으로 나타났습니다 단지 안코와 recyclerView 어댑터 내 코드를 통해 검색 오류 거기 AnkoContext에 대한 제작자는 다음과 같은 서명이 있습니다

AnkoContext.create(ctx: Context, owner: ViewGroup, setContentView: Boolean = false) 
AnkoContext.create(ctx: Context, setContentView: Boolean = false) 

IDE (안드로이드 스튜디오) 당신이 오해하고있는 라인을 강조한다. 나는 첫번째 것을 사용했다 :

AnkoContext.create(parent!!.context, parent)