ich zwei Arten von Ansichten für einen Chat in, in Meiner anderen Aktivität genannt ACTIVITYA funktioniert gut, aber meine Tätigkeit BI verwendet den gleichen Prozess am aufblasen, aber es funktioniert nichtjava.lang.InstantiationException, Instanziieren RecyclerView.ViewHolder
Problem tritt in OnCreateView Inhaber In dem Teil von 'return super.onCreateViewHolder (übergeordnete, viewType);' Relevante Code:
private void setUpAdapter(){
mAdapter = new FirebaseRecyclerAdapter<GroupalChat, RecyclerView.ViewHolder>(GroupalChat.class, R.layout.dumb_layout, RecyclerView.ViewHolder.class, FirebaseUtils.getGrupalChatRef(mPost.getId())) {
@Override
protected void populateViewHolder(RecyclerView.ViewHolder viewHolder, GroupalChat model, int position) {
switch(model.getType()){
case CHAT_RIGHT:
populateViewHolder((ChatGroupalHolderSender) viewHolder, model ,position);
break;
case CHAT_LEFT:
populateViewHolder((ChatGroupalHolderGetter) viewHolder, model ,position);
break;
}
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
switch(viewType){
case CHAT_RIGHT:
View sender = LayoutInflater.from(getApplicationContext()).inflate(R.layout.chat_grupal_sender, parent, false);
return new ChatGroupalHolderSender(sender);
case CHAT_LEFT:
View left = LayoutInflater.from(getApplicationContext()).inflate(R.layout.chat_grupal_getter, parent, false);
return new ChatGroupalHolderGetter(left);
}
return super.onCreateViewHolder(parent, viewType);
}
@Override
public void onBindViewHolder(final RecyclerView.ViewHolder viewHolder, int position) {
GroupalChat item = getItem(position);
int itemViewType = getItemViewType(position);
switch (itemViewType){
case CHAT_RIGHT:
FirebaseUtils.getUsuarioReferencia(firebaseUser.getUid()).child(firebaseUser.getUid()).child("username").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.getValue(String.class) != null){
String name = dataSnapshot.getValue(String.class);
((ChatGroupalHolderSender) viewHolder).mNombrePerfil.setText(name);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
FirebaseUtils.getUsuarioReferencia(firebaseUser.getUid()).child(firebaseUser.getUid()).child("photoUrl").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.getValue(String.class) != null){
String url = dataSnapshot.getValue(String.class);
StorageReference storageReference = FirebaseStorage.getInstance().getReference(url);
Glide.with(GroupChatActivity.this).using(new FirebaseImageLoader()).load(storageReference).into(((ChatGroupalHolderSender) viewHolder).mFotoPerfil);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
((ChatGroupalHolderSender) viewHolder).mTexto.setText(item.getMessage());
((ChatGroupalHolderSender) viewHolder).mFecha.setText(DateUtils.getRelativeTimeSpanString(item.getTiempoMensaje()));
break;
// GETTER
case CHAT_LEFT:
FirebaseUtils.getUsuarioReferencia(item.getUID()).child(item.getUID()).child("username").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.getValue(String.class) != null){
String name = dataSnapshot.getValue(String.class);
((ChatGroupalHolderGetter) viewHolder).mNombrePerfil.setText(name);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
FirebaseUtils.getUsuarioReferencia(item.getUID()).child(item.getUID()).child("photoUrl").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.getValue(String.class) != null){
String url = dataSnapshot.getValue(String.class);
StorageReference storageReference = FirebaseStorage.getInstance().getReference(url);
Glide.with(GroupChatActivity.this).using(new FirebaseImageLoader()).load(storageReference).into(((ChatGroupalHolderGetter) viewHolder).mFotoPerfil);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
((ChatGroupalHolderGetter) viewHolder).mTexto.setText(item.getMessage());
((ChatGroupalHolderGetter) viewHolder).mFecha.setText(DateUtils.getRelativeTimeSpanString(item.getTiempoMensaje()));
break;
}
}
};
}
mein ViewHolders
public static class ChatGroupalHolderGetter extends RecyclerView.ViewHolder{
private CircleImageView mFotoPerfil;
private TextView mNombrePerfil, mFecha, mTexto;
public ChatGroupalHolderGetter(View itemView) {
super(itemView);
mFotoPerfil = (CircleImageView) itemView.findViewById(R.id.fotoPerfilChatGrupalG);
mNombrePerfil = (TextView) itemView.findViewById(R.id.nombreUsuarioChatGrupalG);
mFecha = (TextView) itemView.findViewById(R.id.horaChatGrupalG);
mTexto = (TextView) itemView.findViewById(R.id.textoDeChatGrupalG);
}
}
public static class ChatGroupalHolderSender extends RecyclerView.ViewHolder{
private CircleImageView mFotoPerfil;
private TextView mNombrePerfil, mFecha, mTexto;
public ChatGroupalHolderSender(View itemView) {
super(itemView);
mFotoPerfil = (CircleImageView) itemView.findViewById(R.id.fotoPerfilChatGrupal);
mNombrePerfil = (TextView) itemView.findViewById(R.id.nombreUsuarioChatGrupal);
mFecha = (TextView) itemView.findViewById(R.id.horaChatGrupal);
mTexto = (TextView) itemView.findViewById(R.id.textoDeChatGrupal);
}
}
die Ausnahme:
FATAL EXCEPTION: main
Process: com.octacorp.octa.strank, PID: 22549
Theme: themes:{}
java.lang.RuntimeException: java.lang.InstantiationException: Can't instantiate abstract class android.support.v7.widget.RecyclerView$ViewHolder
at com.firebase.ui.database.FirebaseRecyclerAdapter.onCreateViewHolder(FirebaseRecyclerAdapter.java:176)
at com.octacorp.octa.strank.ui.parties.parties.GroupChatActivity$4.onCreateViewHolder(GroupChatActivity.java:170)
at android.support.v7.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:6367)
at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5555)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5440)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5436)
at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2224)
at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1551)
at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1511)
at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:570)
at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3583)
at android.support.v7.widget.RecyclerView.onMeasure(RecyclerView.java:3025)
at android.view.View.measure(View.java:18799)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1458)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:746)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:629)
at android.view.View.measure(View.java:18799)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:139)
at android.view.View.measure(View.java:18799)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1458)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:746)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:629)
at android.view.View.measure(View.java:18799)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at android.view.View.measure(View.java:18799)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1458)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:746)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:629)
at android.view.View.measure(View.java:18799)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at com.android.internal.policy.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2899)
at android.view.View.measure(View.java:18799)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2108)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1224)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1460)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1115)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6023)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
at android.view.Choreographer.doCallbacks(Choreographer.java:670)
at android.view.Choreographer.doFrame(Choreographer.java:606)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
Ich weiß nicht, was es in meinem activtyA da sein kann wunderbar
zuerst frage ich mich, wie Sie super.onCreateViewHolder (parent, viewType) aufrufen können; weil es eine abstrakte Methode in der Superklasse ist –
Ich überschreibe die Klasse @AbdulWaheed –
Sie überschreiben, aber mit Super-Klasse-Implementierung –