简体   繁体   English

显示 recyclerview 不显示在片段中

[英]display recyclerview not displaying in fragment

I have used three fragments as navigation menu inside this app.我在这个应用程序中使用了三个片段作为导航菜单 I want to put recycler view inside story fragment.我想将回收者视图放入故事片段中。 But I failed to install recycler view.但我未能安装回收站视图。 I am sharing the coding below.我在下面分享代码。 You will give its relevant solution.您将给出其相关的解决方案。

Home Activityclass.Java首页 Activityclass.Java

package com.quotescollector; package com.quotescollector;

import androidx.annotation.NonNull;导入androidx.annotation.NonNull;

import androidx.appcompat.app.ActionBarDrawerToggle;导入 androidx.appcompat.app.ActionBarDrawerToggle;

import androidx.appcompat.app.AppCompatActivity;导入androidx.appcompat.app.AppCompatActivity;

import androidx.appcompat.widget.Toolbar;导入androidx.appcompat.widget.Toolbar;

import androidx.core.view.GravityCompat;导入androidx.core.view.GravityCompat;

import androidx.drawerlayout.widget.DrawerLayout;导入androidx.drawerlayout.widget.DrawerLayout;

import androidx.fragment.app.Fragment;导入androidx.fragment.app.Fragment;

import androidx.fragment.app.FragmentManager;导入androidx.fragment.app.FragmentManager;

import androidx.fragment.app.FragmentTransaction;导入androidx.fragment.app.FragmentTransaction;

import androidx.recyclerview.widget.RecyclerView;导入androidx.recyclerview.widget.RecyclerView;

import android.os.Bundle;导入 android.os.Bundle;

import android.view.MenuItem;导入 android.view.MenuItem;

import com.google.android.material.navigation.NavigationView;导入 com.google.android.material.navigation.NavigationView;

import com.quotescollector.Fragments.FragmentAbout;导入 com.quotescollector.Fragments.FragmentAbout;

import com.quotescollector.Fragments.FragmentStories;导入 com.quotescollector.Fragments.FragmentStories;

import com.quotescollector.Fragments.FragmentSettings;导入 com.quotescollector.Fragments.FragmentSettings;

public class HomeActivity extends AppCompatActivity {公共 class HomeActivity 扩展 AppCompatActivity {

DrawerLayout drawerLayout;

NavigationView navigationView;

Toolbar toolbar;

RecyclerView recyclerView;

@Override

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_home);

    // Now we will find the toolbar here//

    drawerLayout = findViewById(R.id.drawerLayout);

    navigationView = findViewById(R.id.navView);

    toolbar = findViewById(R.id.toolBar);

    recyclerView = findViewById(R.id.recyclerviewStories);

    //Now we will set the toolBar//

    setSupportActionBar(toolbar);

    getSupportActionBar().setTitle("Quotes Collectors");

    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    //Now we set here the String arrays//

    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawerLayout,

toolbar, R.string.OpenDrawer, R.string.CloseDrawer);工具栏,R.string.OpenDrawer,R.string.CloseDrawer);

    drawerLayout.addDrawerListener(toggle);

    toggle.syncState();

    //Here we implement one method//

    navigationView.setNavigationItemSelectedListener(new 

NavigationView.OnNavigationItemSelectedListener() { NavigationView.OnNavigationItemSelectedListener() {

        @Override

        public boolean onNavigationItemSelected(@NonNull MenuItem item) {

            int id = item.getItemId();

            if (id == R.id.About) {

                loadFragment(new FragmentAbout());

            } else if (id == R.id.Stories) {
                loadFragment(new FragmentStories());
            } else {
                loadFragment(new FragmentSettings());
            }
            drawerLayout.closeDrawer(GravityCompat.START);
            return true;
        }
    });

}

@Override
public void onBackPressed() {
    if (drawerLayout.isDrawerOpen(GravityCompat.START)) {
        drawerLayout.closeDrawer(GravityCompat.START);
    } else {
        super.onBackPressed();
    }
    super.onBackPressed();
}

private void loadFragment(Fragment fragment) {

    FragmentManager fragmentManager = getSupportFragmentManager();
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    fragmentTransaction.add(R.id.Content, fragment);
    fragmentTransaction.commit();
}

} }

This is FragmentStoriesclass.java这是FragmentStoriesclass.java

package com.quotescollector.Fragments;

import android.os.Bundle;

import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.quotescollector.Models.StoriesModel;
import com.quotescollector.R;

import java.util.ArrayList;

public class FragmentStories extends Fragment {
    RecyclerView.Adapter adapter;
    RecyclerView recyclerView;
    ArrayList<StoriesModel> storiesModelList;


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view = inflater.inflate(R.layout.fragment_stories, container, false);
        storiesModelList = new ArrayList<>();
        recyclerView = view.findViewById(R.id.recyclerviewStories);
        recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
        recyclerView.setAdapter(adapter);
        displayStories();
        return view;
    }
    private void displayStories() {
        storiesModelList.add(new StoriesModel(R.drawable.stories, "Stories"));
        storiesModelList.add(new StoriesModel(R.drawable.asia, "asia"));
        storiesModelList.add(new StoriesModel(R.drawable.stories, "Stories"));
        storiesModelList.add(new StoriesModel(R.drawable.asia, "asia"));
        storiesModelList.add(new StoriesModel(R.drawable.stories, "Stories"));
        storiesModelList.add(new StoriesModel(R.drawable.asia, "asia"));
    }
}

This is Stories Adapterclass.java这是Stories Adapterclass.java

package com.quotescollector.Adapters;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import com.quotescollector.Models.StoriesModel;
import com.quotescollector.R;

import java.lang.reflect.Array;
import java.util.ArrayList;


public class StroiesAdapter extends RecyclerView.Adapter<StroiesAdapter.viewHolder> {

    ArrayList<StoriesModel> storiesModelArrayList;
    Context context;

    //Here we need a constructor//


    public StroiesAdapter(ArrayList<StoriesModel> storiesModelArrayList, Context context) {
        this.storiesModelArrayList = storiesModelArrayList;
        this.context = context;
    }

    @NonNull
    @Override
    public viewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(context).inflate(R.layout.fragment_stories, parent, false);
        return new viewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull viewHolder holder, int position) {
        StoriesModel storiesModel = storiesModelArrayList.get(position);
        holder.image.setImageResource(storiesModel.getImage());
        holder.text.setText(storiesModel.getText());
    }

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

    public class viewHolder extends RecyclerView.ViewHolder {
        ImageView image;
        TextView text;

        public viewHolder(@NonNull View itemView) {
            super(itemView);

            image = itemView.findViewById(R.id.ImageFeather);
            text = itemView.findViewById(R.id.storiesHandler);
        }
    }
}

Stroies fragment XML file Stroies 片段XML 文件

<?xml version="1.0" encoding="utf-8"?>
<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"
    tools:context=".Fragments.FragmentStories">

    <!-- TODO: Update blank fragment layout -->

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recyclerviewStories"
        android:layout_width="match_parent"
        tools:listitem="@layout/stories_fragment_sample_layout"
        android:layout_height="match_parent"/>

</LinearLayout>

It's stories fragment data with XML files and java classes.它是带有 XML 文件和 java 类的故事片段数据。 I am unable to fix it.我无法修复它。 guide me how I can display recyclerview in navigation menu .指导我如何在导航菜单中显示 recyclerview。

you did not create the adapter object and also you made an adapter named StroiesAdapter but you are using RecyclerView.Adapter which is wrong, here is the updated code, try this:您没有创建适配器 object 并且您创建了一个名为StroiesAdapter的适配器,但您使用的是错误的RecyclerView.Adapter ,这是更新的代码,试试这个:

 package com.quotescollector.Fragments;
    
    import android.os.Bundle;
    
    import androidx.fragment.app.Fragment;
    import androidx.recyclerview.widget.LinearLayoutManager;
    import androidx.recyclerview.widget.RecyclerView;
    
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    
    import com.quotescollector.Models.StoriesModel;
    import com.quotescollector.R;
    
    import java.util.ArrayList;
    
    public class FragmentStories extends Fragment {
        
        // here is the right type of adapter you made
        StroiesAdapter adapter; 

        RecyclerView recyclerView;
        ArrayList<StoriesModel> storiesModelList;
    
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            // Inflate the layout for this fragment
            View view = inflater.inflate(R.layout.fragment_stories, container, false);
            storiesModelList = new ArrayList<>();
            recyclerView = view.findViewById(R.id.recyclerviewStories);
       
            displayStories();
            return view;
        }
        private void displayStories() {
            storiesModelList.add(new StoriesModel(R.drawable.stories, "Stories"));
            storiesModelList.add(new StoriesModel(R.drawable.asia, "asia"));
            storiesModelList.add(new StoriesModel(R.drawable.stories, "Stories"));
            storiesModelList.add(new StoriesModel(R.drawable.asia, "asia"));
            storiesModelList.add(new StoriesModel(R.drawable.stories, "Stories"));
            storiesModelList.add(new StoriesModel(R.drawable.asia, "asia"));

       // setting up your recyclerView and adapter after adding 
      // elements to the list.
      recyclerView.setLayoutManager(new 
                              LinearLayoutManager(getContext()));
           // making object for adpter
            adapter = new StroiesAdapter(storiesModelList, getContext());
           // now setting up the adpter
            recyclerView.setAdapter(adapter);

        }
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM