私はListView
を作成しました。iMsg
とuMsg
の値に応じて異なるxmlファイルを膨張させたい(いずれか一方は常に空白になり、もう一方は膨らませる必要があります)。TypeHolderのClassCastException Android
私には2つのXMLファイルがあります。両方とも異なるスタイリングのTextView
を持っています。コードはClassCastException
をキャストします。 getViewTypeCount()
メソッドをオーバーライドする別の質問の回答を読みました。しかし、私はそれを得ていませんでした。誰も助けることができますか?ここで
public class ChatAdapter extends ArrayAdapter<Chatmsg>{
public ChatAdapter(Context context, ArrayList<Chatmsg> messages) {
super(context,0,messages);
}
public static class iViewHolder{
TextView imsg;
}
public static class uViewHolder{
TextView umsg;
}
@Override
public View getView(int position, View convertView, ViewGroup parent){
Chatmsg chatmsg = getItem(position);
View v = null;
if(chatmsg.getuMsg()== null) {
iViewHolder iviewHolder;
v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.pc_custom_row_i, parent, false);
iviewHolder = new iViewHolder();
iviewHolder.imsg = (TextView) v.findViewById(R.id.iMessage);
v.setTag(iviewHolder);
} else {
iviewHolder = (iViewHolder) v.getTag();
}
iviewHolder.imsg.setText(chatmsg.getiMsg());
} else {
uViewHolder uviewHolder;
v = convertView;
if(v== null){
LayoutInflater vi1 = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi1.inflate(R.layout.pc_custom_row_u,parent,false);
uviewHolder = new uViewHolder();
uviewHolder.umsg = (TextView) v.findViewById(R.id.uMessage);
v.setTag(uviewHolder);
} else {
uviewHolder = (uViewHolder) v.getTag();
}
uviewHolder.umsg.setText(chatmsg.getuMsg());
}
return v;
}
}
ログです:
E/AndroidRuntime:
FATAL EXCEPTION: main Process: in.techxator.zero.zero_chat, PID: 28876
java.lang.ClassCastException:in.techxator.zero.zero_chat.ChatAdapter$iViewHolder cannot be cast to in.techxator.zero.zero_chat.ChatAdapter$uViewHolder at in.techxator.zero.zero_chat.ChatAdapter.getView(ChatAdapter.java:120)
あなたの質問に例外スタックトレースを追加できたら助けになります。 –