我在mListMy
事件中初始化了属性onCreateViewHolder
,但收到错误
lateinit属性mListMy尚未初始化
我该如何解决?
代码
class MydAdapter () : RecyclerView.Adapter<MydAdapter.MyViewHolder>() {
private lateinit var mListMy: List<MRecord>
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MydAdapter.MyViewHolder {
initListMy()
val v = LayoutInflater.from(parent.context).inflate(R.layout.item_recyclerview_my, parent, false)
return MyViewHolder(v)
}
fun initListMy(){
mListMy=RecordHandler().listAllRecord(ESortBy.NameAsc,ECategory.My)
}
override fun onBindViewHolder(holder: MydAdapter.MyViewHolder, position: Int) {
holder.bindItems(mListMy[position])
}
}
答案 0 :(得分:1)
要初始化属性,可以使用<select ng-model="thridCountry" id="thridCountry" ng-change="change()" required class="form-control" >
<option ng-value="0">Select 3rd Country</option>
<option ng-disabled="secondCountry=='india'">india</option>
<option ng-disabled="secondCountry=='usa'">usa</option>
<option ng-disabled="secondCountry=='Japan'">Japan</option>
</select>
的kotlin块。在构造函数调用之后调用。
init
答案 1 :(得分:0)
在Kotlin lateinit
修饰符中,不允许带有初始化器的属性。
lateinit
表示您稍后将在initilizer中为该变量分配值。
在这种情况下,您可以使用普通的var
。否则应该是这样的构造器
class MydAdapter (va1 mListMy:List<YourDatamodel> ) : RecyclerView.Adapter<MydAdapter.MyViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MydAdapter.MyViewHolder {
val v = LayoutInflater.from(parent.context).inflate(R.layout.item_recyclerview_my, parent, false)
return MyViewHolder(v)
}
override fun onBindViewHolder(holder: MydAdapter.MyViewHolder, position: Int) {
holder.bindItems(mListMy[position])
}
}
答案 2 :(得分:0)
您可以在构造函数中初始化列表,请看下面的行:
bool find( char * str, char * word )
{
int i,j,k,l;
i = strlen( str );
k = strlen( word );
l = 0;
while ( i >= k )
{
j = 0;
while ( *(str+j+l) == *(word+j) )
{
j++;
}
i--; l++;
if ( j >= k )
{
return true;
}
}
return false;
}
这样,您可以在不初始化列表的情况下调用适配器,因为它已经使用默认值(空列表)进行了初始化。