[英]display recyclerview not displaying in fragment
我在这个应用程序中使用了三个片段作为导航菜单。 我想将回收者视图放入故事片段中。 但我未能安装回收站视图。 我在下面分享代码。 您将给出其相关的解决方案。
首页 Activityclass.Java
package com.quotescollector;
导入androidx.annotation.NonNull;
导入 androidx.appcompat.app.ActionBarDrawerToggle;
导入androidx.appcompat.app.AppCompatActivity;
导入androidx.appcompat.widget.Toolbar;
导入androidx.core.view.GravityCompat;
导入androidx.drawerlayout.widget.DrawerLayout;
导入androidx.fragment.app.Fragment;
导入androidx.fragment.app.FragmentManager;
导入androidx.fragment.app.FragmentTransaction;
导入androidx.recyclerview.widget.RecyclerView;
导入 android.os.Bundle;
导入 android.view.MenuItem;
导入 com.google.android.material.navigation.NavigationView;
导入 com.quotescollector.Fragments.FragmentAbout;
导入 com.quotescollector.Fragments.FragmentStories;
导入 com.quotescollector.Fragments.FragmentSettings;
公共 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,
工具栏,R.string.OpenDrawer,R.string.CloseDrawer);
drawerLayout.addDrawerListener(toggle);
toggle.syncState();
//Here we implement one method//
navigationView.setNavigationItemSelectedListener(new
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();
}
}
这是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"));
}
}
这是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 片段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>
它是带有 XML 文件和 java 类的故事片段数据。 我无法修复它。 指导我如何在导航菜单中显示 recyclerview。
您没有创建适配器 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.