我在我的RecyclerViewAdapter
我用他們改變取決於我dynamicaly收到的位置來看3 ViewHolder。爲什麼myViewHolder(s)不能被鑄造?
@Override
public int getItemViewType(int position) {
int viewType = 0;
if (position == 0) {
viewType = 0;
}else if (position == 1){
viewType = 1;
}else if (position == 2){
viewType = 2;
}
return viewType;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_notification, parent, false);
RecyclerView.ViewHolder viewHolder;
switch (viewType){
case 0:
return new MyViewHolder(v);
case 1:
return new MyViewHolderAccepted(v);
case 2:
return new MyViewHolderRefused(v);
default:
return null;
}
}
@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) {
final DataNotifications dataNotifications = list.get(position);
int type = Integer.valueOf(dataNotifications.getStatue());
switch (getItemViewType(type)){
case 0:
MyViewHolder myViewHolder = (MyViewHolder) holder;
........
break;
case 1:
MyViewHolderAccepted myViewHolderAccepted = (MyViewHolderAccepted) holder;
.......
break;
case 2:
MyViewHolderRefused myViewHolderRefused = (MyViewHolderRefused) holder;
........
break;
}
// Glide.with(context).load(dataNotifications.getThumbnail()).into(holder.thumnail);
}
當我運行上面的代碼,我得到這個異常:
NotificationAdapter $ MyViewHolder不能轉換到 NotificationAdapter $ MyViewHolderAccepted
我應該爲每個ViewHolder
不同的佈局? - 但我只改變一個TextView
的顏色,因此每個ViewHolder
的佈局會很昂貴。
我viewHolders
public class MyViewHolder extends RecyclerView.ViewHolder {
....
public MyViewHolder(View itemView) {
super(itemView);
....
}
}
public class MyViewHolderAccepted extends MyViewHolder{
...
public MyViewHolderAccepted(View itemView) {
super(itemView);
...
}
public class MyViewHolderRefused extends MyViewHolder{
public MyViewHolderRefused(View itemView) {
super(itemView);
....
}
}
你在數組中傳遞的數組長度是什麼 –
downvoter你能解釋爲什麼嗎? –
@ V-rundPuro打哪個陣列? –