Recycleview не появляется во фрагменте - PullRequest
0 голосов
/ 03 февраля 2020

Я пытаюсь получить некоторые данные из своей базы данных, поэтому я создал recycleview в действии, чтобы получить данные, и это сработало без проблем.

Но теперь я добавил свой recycle в Fragment, чтобы получить данные, и ему удалось получить данные, но я не могу их видеть, firenase ( в случае успеха ) говорит мне, что это работает, но я не вижу recycleview.

Я искал все больше и больше, не находя никакого решения, но у другого есть такая же проблема, и он не нашел другого решения здесь.

RecyclerView не отображается во фрагменте

Я испробовал все решения в этом вопросе, но это не сработало, теперь я потратил больше двух месяцев, не выяснив проблему.

FriendsFragment

public class FriendsFragment extends Fragment {  

DatabaseReference databaseReference;
    RecyclerView recyclerView;
    RecyclerView.Adapter adapter ;
    ProgressDialog progressDialog;
    List<ImageUploadInfo> list = new ArrayList<>();
    private Context context;


    public FriendsFragment() {  

    }  

    @Override  
    public View onCreateView(LayoutInflater inflater, ViewGroup container,  
                             Bundle savedInstanceState) {  

        View view = inflater.inflate(com.wanjy.dannie.rivchat.R.layout.fragment_people, container, false);
        context = view.getContext();


        recyclerView = (RecyclerView) view.findViewById(R.id.recycleListFriend);
        recyclerView.setHasFixedSize(true);
        recyclerView.setLayoutManager(new LinearLayoutManager(context));

        progressDialog = new ProgressDialog(context);
        progressDialog.setMessage("Loading Images From Firebase.");
        progressDialog.show();

        databaseReference = FirebaseDatabase.getInstance().getReference("All_Image_Uploads_Database");

        databaseReference.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot snapshot) {
                    for (DataSnapshot postSnapshot : snapshot.getChildren()) {

                        ImageUploadInfo imageUploadInfo = postSnapshot.getValue(ImageUploadInfo.class);
                        list.add(imageUploadInfo);

                    }

                    adapter = new RecyclerViewAdapter(context, list);
                    recyclerView.setAdapter(adapter);

                    progressDialog.dismiss();

                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                    // Hiding the progress dialog.
                    progressDialog.dismiss();

                }
            });



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

    }
}  

RecyclerViewAdapter

public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> {

    Context context;
    List<ImageUploadInfo> MainImageUploadInfoList;

    public RecyclerViewAdapter(Context context, List<ImageUploadInfo> TempList) {

        this.MainImageUploadInfoList = TempList;

        this.context = context;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.recyclerview_items, parent, false);

        ViewHolder viewHolder = new ViewHolder(view);

        return viewHolder;
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        ImageUploadInfo UploadInfo = MainImageUploadInfoList.get(position);

        holder.imageNameTextView.setText(UploadInfo.getImageName());

        //Loading image from Glide library.
        Glide.with(context).load(UploadInfo.getImageURL()).into(holder.imageView);
    }

    @Override
    public int getItemCount() {

        return MainImageUploadInfoList.size();
    }

    class ViewHolder extends RecyclerView.ViewHolder {

        public ImageView imageView;
        public TextView imageNameTextView;

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

            imageView = (ImageView) itemView.findViewById(R.id.imageView);

            imageNameTextView = (TextView) itemView.findViewById(R.id.ImageNameTextView);
        }
    }
}

ImageUploadInfo

public class ImageUploadInfo {

    public String imageName;

    public String imageURL;

    public ImageUploadInfo() {

    }

    public ImageUploadInfo(String name, String url) {

        this.imageName = name;
        this.imageURL= url;
    }

    public String getImageName() {
        return imageName;
    }

    public String getImageURL() {
        return imageURL;
    }

} 

recyclerview_items

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:id="@+id/cardview1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    card_view:cardElevation="5dp"
    card_view:contentPadding="5dp"
    card_view:cardCornerRadius="5dp"
    card_view:cardMaxElevation="5dp">

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="#FFFFFF"
        android:orientation="vertical">

        <LinearLayout
            android:layout_height="wrap_content"
            android:layout_width="match_parent"
            android:orientation="horizontal"
            android:background="#FFFFFF"
            android:padding="1dp">

            <ImageView
                android:layout_height="50dp"
                android:layout_width="50dp"
                android:src="@android:drawable/ic_delete"
                android:scaleType="fitXY"/>

            <LinearLayout
                android:layout_height="match_parent"
                android:layout_width="wrap_content"
                android:orientation="vertical"
                android:background="#FFFFFF"
                android:layout_weight="1.0"
                android:padding="3dp">

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textSize="15dp"
                    android:textColor="#000000"
                    android:text="أخبار الدولة"
                    android:gravity="center"
                    android:id="@+id/myname"/>

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textAppearance="?android:attr/textAppearanceSmall"
                    android:text="التاريخ"
                    android:id="@+id/date"
                    android:textColor="#000000"/>

            </LinearLayout>

        </LinearLayout>

        <ImageView
            android:id="@+id/imageView"
            android:layout_width="fill_parent"
            android:layout_height="180dp"
            android:src="@mipmap/ic_launcher"
            android:background="#FFFFFF"/>

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:text="Large Text"
            android:layout_weight="1.0"
            android:textSize="14sp"
            android:textColor="#000000"
            android:layout_gravity="right"
            android:padding="4dp"
            android:gravity="right"
            android:id="@+id/ImageNameTextView"/>

        <LinearLayout
            android:layout_height="wrap_content"
            android:layout_width="match_parent"
            android:orientation="horizontal"
            android:background="#FFFFFF"
            android:padding="2dp">

            <LinearLayout
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:orientation="horizontal"
                android:background="#FFFFFF"
                android:layout_weight="1.0"
                android:gravity="center">

                <ImageView
                    android:layout_height="30dp"
                    android:layout_width="30dp"
                    android:src="@android:drawable/ic_delete"
                    android:scaleType="fitXY"/>

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textAppearance="?android:attr/textAppearanceSmall"
                    android:text="0"
                    android:textColor="#000000"
                    android:padding="2dp"/>

            </LinearLayout>

            <LinearLayout
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:orientation="horizontal"
                android:background="#FFFFFF"
                android:layout_weight="1.0"
                android:gravity="center">

                <ImageView
                    android:layout_height="30dp"
                    android:layout_width="30dp"
                    android:src="@android:drawable/ic_delete"
                    android:scaleType="fitXY"/>

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textAppearance="?android:attr/textAppearanceSmall"
                    android:text="0"
                    android:textColor="#000000"
                    android:padding="2dp"/>

            </LinearLayout>

            <LinearLayout
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:orientation="horizontal"
                android:background="#FFFFFF"
                android:layout_weight="1.0"
                android:gravity="center">

                <ImageView
                    android:layout_height="30dp"
                    android:layout_width="30dp"
                    android:src="@android:drawable/ic_delete"
                    android:scaleType="fitXY"/>

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textAppearance="?android:attr/textAppearanceSmall"
                    android:text="0"
                    android:textColor="#000000"
                    android:padding="2dp"/>

            </LinearLayout>

        </LinearLayout>

    </LinearLayout>

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

фрагмент_ людей

<RelativeLayout 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.support.v4.widget.SwipeRefreshLayout
        android:id="@+id/swipeRefreshLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <android.support.v7.widget.RecyclerView
            android:id="@+id/recycleListFriend"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginTop="15dp" />
    </android.support.v4.widget.SwipeRefreshLayout>
</RelativeLayout>

Мой билд сборки

* 1 043 *
  • Примечание Моя переработка работы в Деятельности без проблем, но она не появляется в моем фрагменте.

Я надеюсь, что кто-то найдет проблему в моем код.

Ответы [ 2 ]

0 голосов
/ 04 февраля 2020

Теперь это работает, я просто изменил фрагмент на этот

public class FriendsFragment extends Fragment {  

DatabaseReference databaseReference;
    RecyclerView recyclerView;
    RecyclerView.Adapter adapter ;
    ProgressDialog progressDialog;
    List<ImageUploadInfo> list = new ArrayList<>();
    private Context context;


    public FriendsFragment() {  

    }  

    @Override  
    public View onCreateView(LayoutInflater inflater, ViewGroup container,  
                             Bundle savedInstanceState) {  

        View view = inflater.inflate(com.wanjy.dannie.rivchat.R.layout.fragment_people, container, false);
        context = view.getContext();










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

    }

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState)
    {

        recyclerView = (RecyclerView) view.findViewById(R.id.recycleListFriend);



        progressDialog = new ProgressDialog(context);
        progressDialog.setMessage("Loading Images From Firebase.");
        progressDialog.show();

        databaseReference = FirebaseDatabase.getInstance().getReference("All_Image_Uploads_Database");

        databaseReference.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot snapshot) {
                    for (DataSnapshot postSnapshot : snapshot.getChildren()) {

                        ImageUploadInfo imageUploadInfo = postSnapshot.getValue(ImageUploadInfo.class);
                        list.add(imageUploadInfo);

                    }

                    adapter = new RecyclerViewAdapter(context, list);
                    recyclerView.setAdapter(adapter);
                    recyclerView.setHasFixedSize(true);
                    recyclerView.setLayoutManager(new LinearLayoutManager(context));


                    progressDialog.dismiss();

                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                    // Hiding the progress dialog.
                    progressDialog.dismiss();

                }
            });




        super.onViewCreated(view, savedInstanceState);
    }




}  

Не знаю, в чем была проблема, но я вытащил пример и нашел, что кто-то использует метод oncreateview Итак, он мне понравился, и я переместил эту строку

recyclerView.setLayoutManager(new LinearLayoutManager(context));

в эту строку

recyclerView.setAdapter(adapter);

Теперь она работает без проблем.

0 голосов
/ 03 февраля 2020

Можете ли вы сделать какое-нибудь представление в фрагменте? Я заметил, что ваш MyFragment класс инициализирует fragment_people.xml, но ваш xml класс называется Fragment.xml, если это не опечатка. Убедитесь, что вы можете показать любой тип представления в своем фрагменте, прежде чем думать, что это проблема представления переработчика.

Кроме того, в вашем адаптере вы используете макет элемента с именем recyclerview_items.xml, но у вас есть класс с именем Recycle item, если только это не опечатка.

...