-2

Wenn ich auf die Chat-Registerkarte klicke, werden in der Recycler-Ansicht die Elemente im Fragment nicht angezeigt. Es hat vorher funktioniert, als ich es in einer Aktivität hatte. Jetzt scheint es die Elemente beim Ausführen der App nicht zu zeigen. Ich habe versucht, das Debuggen und die Likes und immer noch nicht das Problem zu finden. Jede Hilfe wird dankbar sein, danke!RecyclerView zeigt keine Elemente im View-Pager-Fragment an

ChatFragment.java

package com.swampass.nauticalapp; 

import android.app.Activity; 
import android.content.Context; 
import android.net.Uri; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v7.widget.LinearLayoutManager; 
import android.support.v7.widget.RecyclerView; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 

import com.google.firebase.auth.FirebaseAuth; 
import com.google.firebase.database.DataSnapshot; 
import com.google.firebase.database.DatabaseError; 
import com.google.firebase.database.DatabaseReference; 
import com.google.firebase.database.FirebaseDatabase; 
import com.google.firebase.database.ValueEventListener; 
import com.swampass.nauticalapp.model.ActiveChatConvo; 
import com.swampass.nauticalapp.model.User; 

import java.util.ArrayList; 

public class ChatsFragment extends Fragment { 

    private RecyclerView recyclerView; 
    private DatabaseReference mRef; 
    private LinearLayoutManager mLinearLayoutManager; 
    private ArrayList<User> users; 
    private FirebaseAuth mAuth; 
    private ActiveChatConvo adapter; 

    public ChatsFragment() { 
     // Required empty public constructor 
    } 


    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
    { 
     View penis = inflater.inflate(R.layout.fragment_chats, container, false); 

     // Inflate the layout for this fragment 
     mRef = FirebaseDatabase.getInstance().getReference("Users"); 
     mRef.keepSynced(true); 

     mAuth = FirebaseAuth.getInstance(); 

     users = new ArrayList<>(); 
     adapter = new ActiveChatConvo(users,getContext()); 

     mRef.addListenerForSingleValueEvent(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 
       if (dataSnapshot.exists()) 
       { 
        for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) 
        { 
         String name = postSnapshot.child("Name").getValue(String.class); 
         String email = postSnapshot.child("Email").getValue(String.class); 
         String pic = postSnapshot.child("image").getValue(String.class); 

         users.add(new User(name,email,pic)); 

        } 

        adapter.notifyDataSetChanged(); 
      } 

      } 

      @Override 
      public void onCancelled(DatabaseError databaseError) { 

      } 
     }); 

     //Recycler View 
     recyclerView = (RecyclerView) penis.findViewById(R.id.active_chats); 
     //ActiveChatConvo adapter = new ActiveChatConvo(users,this); 
     Context c = getContext(); 
     mLinearLayoutManager = new LinearLayoutManager(getActivity()); 
     //mLinearLayoutManager.setStackFromEnd(true); 
     recyclerView.setLayoutManager(mLinearLayoutManager); 

     recyclerView.setAdapter(adapter); 
     //adapter.notifyDataSetChanged(); 

     return inflater.inflate(R.layout.fragment_chats, container, false); 
    } 

} 

ActiveChatConvo.java

package com.swampass.nauticalapp.model; 

import android.content.Context; 
import android.content.Intent; 
import android.net.Uri; 
import android.support.v7.widget.RecyclerView; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Button; 
import android.widget.ImageView; 
import android.widget.LinearLayout; 
import android.widget.TextView; 

import com.google.firebase.database.DataSnapshot; 
import com.google.firebase.database.DatabaseError; 
import com.google.firebase.database.DatabaseReference; 
import com.google.firebase.database.ValueEventListener; 
import com.squareup.picasso.Picasso; 
import com.swampass.nauticalapp.ChatConversationActivity; 
import com.swampass.nauticalapp.R; 

import java.util.ArrayList; 
import java.util.List; 

/** 
* Created by Peter on 6/6/2017. 
*/ 

public class ActiveChatConvo extends RecyclerView.Adapter<ActiveChatConvo.ViewHolder> { 
    private ArrayList<User> mUsers; 
    private Context mContext; 

    public ActiveChatConvo(ArrayList<User> users, Context dick) { 
     mUsers = users; 
     mContext = dick; 
    } 

    private Context getContext() { 
     return mContext; 
    } 

    @Override 
    public ActiveChatConvo.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     Context context = parent.getContext(); 
     LayoutInflater inflater = LayoutInflater.from(context); 

     // Inflate the custom layout 
     View contactView = inflater.inflate(R.layout.chat_single_item, parent, false); 

     // Return a new holder instance 
     ViewHolder viewHolder = new ViewHolder(contactView); 
     return viewHolder; 
    } 

    @Override 
    public void onBindViewHolder(ViewHolder holder, int position) { 
     // Get the data model based on position 
     User user = mUsers.get(position); 

     // Set item views based on your views and data model 
     TextView name = holder.mItemName; 
     name.setText(user.getName()); 
     TextView description = holder.mItemDescription; 
     description.setText(user.getEmail()); 
     ImageView pic = holder.mItemImage; 
     Picasso.with(pic.getContext()).load(Uri.parse(user.getPic())).into(pic); 

    } 

    @Override 
    public int getItemCount() { 
     return mUsers.size(); 
    } 

    public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { 

     private ImageView mItemImage; 
     private TextView mItemName; 
     private TextView mItemDescription; 
     private LinearLayout layout; 
     final LinearLayout.LayoutParams params; 

     public ViewHolder(View v) { 
      super(v); 

      mItemImage = (ImageView) v.findViewById(R.id.chat_persion_image); 
      mItemName = (TextView) v.findViewById(R.id.chat_persion_name); 
      mItemDescription = (TextView) v.findViewById(R.id.chat_persion_email); 
      layout = (LinearLayout) itemView.findViewById(R.id.show_chat_single_item_layout); 
      params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); 
      v.setOnClickListener(this); 
     } 

     @Override 
     public void onClick(View v) { 
      Context context = itemView.getContext(); 


      Intent intent = new Intent(context, ChatConversationActivity.class); 
      // intent.putExtra("image_id",); 
      intent.putExtra("descripion", mItemDescription.getText().toString()); 
      intent.putExtra("name", mItemName.getText().toString()); 

      context.startActivity(intent); 
     } 
    } 
} 

fragment_chat.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    tools:context="com.swampass.nauticalapp.ChatsFragment"> 

    <!-- TODO: Update blank fragment layout --> 
    <android.support.v7.widget.RecyclerView 

     android:id="@+id/active_chats" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" 
     android:background="@color/colorAccent"> 


    </android.support.v7.widget.RecyclerView> 

</LinearLayout> 
+1

diesen Flusenrücklauf ändern inflater.inflate (R.layout.fragment_chats, container, false); Penis zurückgeben; –

Antwort

1

Im ChatFragment.java, sollten Sie die Ansicht zurückkehren Sie erstellt haben - penis, und nicht inflater.inflate(R.layout.fragment_chats, container, false). In diesem Fall wird eine leere Ansicht zurückgegeben und nicht die, die Sie erstellen.

+0

vielen dank! –

+0

Dies muss das erste Vorkommen auf SO sein, wo "Penis" die Antwort ist. – the4kman

Verwandte Themen