我是编程新手,我很难尝试设置这个recycleview。请帮帮我!如果你可以的话。我相信主要的问题出在主要的activity上。
错误
原因:java.lang.NullPointerException:尝试对com.example.application.fragments.home.HomeFragment.onCreate(HomeFragment.java:32)上的空对象引用调用虚拟方法“void androidx.recyclerview.widget.recyclerview.setLayoutManager(androidx.recyclerview.widget.recyclerview$LayoutManager)”
这是主要活动
private BottomNavigationView bottomNavigationView;
private RecyclerView recyclerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bottomNavigationView = findViewById(R.id.bottonNavigationView);
loadFragment(new HomeFragment());
setBottomNavigationView();
}
private void loadFragment(Fragment fragment) {
// create a FragmentManager
FragmentManager fragmentManager = getSupportFragmentManager();
// create a FragmentTransaction to begin the transaction and replace the Fragment
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
// replace the FrameLayout with new Fragment
fragmentTransaction.replace(R.id.idMainFrameLayout, fragment);
fragmentTransaction.commit(); // save the changes
//crédits abhiandroid
}
@SuppressLint("NonConstantResourceId")
public void setBottomNavigationView() {
bottomNavigationView.setOnNavigationItemSelectedListener(item -> {
switch (item.getItemId()) {
case R.id.btnSearch:
loadFragment(new SearchFragment());
break;
case R.id.btnFeed:
loadFragment(new FeedFragment());
break;
case R.id.btnShedule:
loadFragment(new SheduleFragment());
break;
case R.id.btnProfile:
loadFragment(new ProfileFragment());
break;
default:
loadFragment(new HomeFragment());
}
return true;
});
}
}```
AND THE FRAGMENT
```class HomeFragment extends Fragment {
private RecyclerView recyclerView = getView().findViewById(R.id.recycleViewHome);
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
MyAdapter myAdapter = new MyAdapter(getContext(), getMyList());
recyclerView.setAdapter(myAdapter);
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_home, container, false);
RecyclerView recyclerView = getView().findViewById(R.id.recycleViewHome);
return view;
}
private ArrayList<Store> getMyList() {
Drawable drawable = getResources().getDrawable(R.drawable.ic_google_svg, null);
ImageView imageView = null;
TextView mTitle = null, mSubTitle = null;
imageView.setImageDrawable(drawable);
mTitle.setText("GOOGLE");
mSubTitle.setText("Description");
ArrayList<Store> storeArrayList = new ArrayList<>();
Store store = new Store();
store.setPhotoId(imageView);
store.setmTitle(mTitle);
store.setSubTitle(mSubTitle);
storeArrayList.add(store);
Store store1 = new Store();
store.setPhotoId(imageView);
store.setmTitle(mTitle);
store.setSubTitle(mSubTitle);
storeArrayList.add(store);
Store store2 = new Store();
store.setPhotoId(imageView);
store.setmTitle(mTitle);
store.setSubTitle(mSubTitle);
storeArrayList.add(store);
Store store3 = new Store();
store.setPhotoId(imageView);
store.setmTitle(mTitle);
store.setSubTitle(mSubTitle);
storeArrayList.add(store);
Store store4 = new Store();
store.setPhotoId(imageView);
store.setmTitle(mSubTitle);
store.setSubTitle(mSubTitle);
storeArrayList.add(store);
Store store5 = new Store();
store.setPhotoId(imageView);
store.setmTitle(mTitle);
store.setSubTitle(mSubTitle);
storeArrayList.add(store);
Store store6 = new Store();
store.setPhotoId(imageView);
store.setmTitle(mTitle);
store.setSubTitle(mSubTitle);
storeArrayList.add(store);
Store store7 = new Store();
store.setPhotoId(imageView);
store.setmTitle(mTitle);
store.setSubTitle(mSubTitle);
storeArrayList.add(store);
Store store8 = new Store();
store.setPhotoId(imageView);
store.setmTitle(mTitle);
store.setSubTitle(mSubTitle);
storeArrayList.add(store);
return storeArrayList;
}
}```
<<<<<<<<RECYCLEVIEW>>>>>>>>>>>
```class MyHolder extends RecyclerView.ViewHolder {
private ImageView mImageView;
private TextView mTitle, mSubTitle;
public MyHolder(@NonNull View itemView) {
super(itemView);
this.mImageView = itemView.findViewById(R.id.btnImageStore);
this.mTitle = itemView.findViewById(R.id.txtTitleStore);
this.mSubTitle = itemView.findViewById(R.id.txtsubTitle);
}
public ImageView getmImageView() {
return mImageView;
}
public void setmImageView(ImageView mImageView) {
this.mImageView = mImageView;
}
public TextView getmTitle() {
return mTitle;
}
public void setmTitle(TextView mTitle) {
this.mTitle = mTitle;
}
public TextView getmSubTitle() {
return mSubTitle;
}
public void setmSubTitle(TextView mSubTitle) {
this.mSubTitle = mSubTitle;
}
}```
```class MyAdapter extends RecyclerView.Adapter<MyHolder> {
private Context context;
ArrayList<Store> storeArrayList;
public MyAdapter(Context context, ArrayList<Store> storeArrayList) {
this.context = context;
this.storeArrayList = storeArrayList;
}
@NonNull
@Override
public MyHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.card_layout_stores, null, false);
return new MyHolder(view);
}
@Override
public void onBindViewHolder(@NonNull MyHolder myholder, int position) {
myholder.setmImageView(storeArrayList.get(position).getPhotoId());
myholder.setmTitle(storeArrayList.get(position).getmTitle());
myholder.setmSubTitle(storeArrayList.get(position).getSubTitle());
}
@Override
public int getItemCount() {
return storeArrayList.size();
}
}```
出现此错误是因为onCreateView()
方法是在onCreateView()
方法之前调用的,因此您尝试在初始化RecyclerView之前设置适配器和LayoutManager,因此需要在onCreateView()
方法中添加适配器和LayoutManager。请在此处检查片段生命周期:https://developer.android.com/guide/fragments/lifecycle#states
此外,您还创建了两个RecyclerView实例,一个在片段上,另一个在onCreateView()
中,因此您需要将所有代码从onCreateView()
移动到片段中的onCreateView()
中
顶部碎片 activity_main.xml
如何在CardView中打开onClick中的片段?我在Cardview中有一个列表,当我单击时希望在另一个片段中显示。这是adapter.class 这是layout.xml 我解决了onClick的问题,现在我的问题是我不能打开另一个片段。如何在myActive中调用我的方法?
我有一个,它显示了一个包含的。我正在使用从SQL加载数据,所有数据都显示得很好。 我想知道的是,我的工具栏中有一个搜索图标在中膨胀,当用户单击它并输入数据时,它应该在中的中进行筛选。 我已经在中实现了,还实现了和方法。我只是不知道如何直接使用中的搜索来过滤中的。
现在,我想使用Parse添加服务器拉请求,将列表中的数据添加到适配器,并在用户查看页面后填充recyclerview,这样 1)我是否应该添加setUserVisisbleHint中的所有代码,并只添加0.5秒延迟,以便在调用setContentView后执行它,以确保不出现空指针异常错误或 2)是否有更好的方法/其他功能可以实现相同的功能?
根据谷歌的文档: 现在可以在片段中嵌入片段。这对于各种情况都很有用,在这些情况下,您需要将动态和可重用的UI组件放置到本身是动态和可重用的UI组件中。例如,如果使用ViewPager创建左右滑动并占用大部分屏幕空间的片段,现在可以将片段插入每个片段页面。要嵌套片段,只需对要添加片段的片段调用getChildFragmentManager()。这将返回一个FragmentManager,您可以像通常
我有一个片段,其中我已经在屏幕顶部实现了一个包含cardview的recyclerview,现在我想创建另一个recyclerview,它还将cardview添加到同一片段中的屏幕底部。 我是android studio的新手,所以知道在哪里放置什么对我来说是个问题。 这是片段代码 现在如何添加另一个回收器视图? 这是布局图