gpt4 book ai didi

java - Fragment 中的 RecyclerView – 如何从数组列表中检索数据

转载 作者:行者123 更新时间:2023-12-02 11:38:25 24 4
gpt4 key购买 nike

所以我看到了这个tutorial在抽屉导航的 fragment 中创建一个回收 View 。在本教程中,数据存储在数组中。我现在想做的是将数据存储在 ArrayList 中。

这是我在“Tutor” fragment 中的代码:

   public class Tutors extends Fragment
{
View myView;
private ArrayList<TutorModel> tutorModelList = new ArrayList<>();
private RecyclerView recyclerView;
private MyAdapter tutorAdapter;

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getTutorData();
}

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
myView = inflater.inflate(R.layout.admin_manage_tutors,
container, false);
recyclerView = myView.findViewById(R.id.recycler_view);

tutorAdapter = new MyAdapter(tutorModelList);
RecyclerView.LayoutManager mLayoutManager = new
LinearLayoutManager(getActivity());
recyclerView.setLayoutManager(mLayoutManager);
recyclerView.setItemAnimator(new DefaultItemAnimator());
recyclerView.setAdapter(tutorAdapter);
return myView;
}


public void getTutorData()
{
TutorModel tutor = new TutorModel("Juan", "Computer Programming");
tutorModelList.add(tutor);

tutor = new TutorModel("Santiago", "French History");
tutorModelList.add(tutor);

tutor = new TutorModel("Jose", "Philippine History");
tutorModelList.add(tutor);

tutorAdapter.notifyDataSetChanged();

}
}

这是我的适配器的代码:

public class MyAdapter extends
RecyclerView.Adapter<MyAdapter.MyViewHolder> {

public List<TutorModel> tutorList;

public class MyViewHolder extends RecyclerView.ViewHolder {
public TextView name, subjects;

public MyViewHolder(View view) {
super(view);
name = view.findViewById(R.id.name_tutor);
subjects = view.findViewById(R.id.subjects_tutor);
}
}


public MyAdapter(List<TutorModel> tutorList) {
this.tutorList = tutorList;
}

@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
{
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.tutor_list, parent, false);

return new MyViewHolder(itemView);
}

@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
TutorModel tutor = tutorList.get(position);
holder.name.setText(tutor.getTutorName());
holder.subjects.setText(tutor.getTutorSubject());
}

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

这是我的 getter/setter 代码:

public class TutorModel
{
String tutorName, tutorSubject;

public String getTutorName() {
return tutorName;
}

public void setTutorName(String tutorName) {
this.tutorName = tutorName;
}

public String getTutorSubject() {
return tutorSubject;
}

public void setTutorSubject(String tutorSubject) {
this.tutorSubject = tutorSubject;
}

public TutorModel(String tutorName, String tutorSubject) {
this.tutorName = tutorName;
this.tutorSubject = tutorSubject;
}

public TutorModel() {
}
}

当我尝试运行该应用程序时,它崩溃了。

最佳答案

onCreateView 将在 onCreate 之后调用,但 getTutorData(); 正在通知适配器尚未由 onCreateView 初始化 因此,请在 getTutorData(); 方法调用之前初始化您的适配器

或者更好的方法是在onCreateView内调用getTutorData

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
myView = inflater.inflate(R.layout.admin_manage_tutors,
container, false);
recyclerView = myView.findViewById(R.id.recycler_view);

tutorAdapter = new MyAdapter(tutorModelList);
RecyclerView.LayoutManager mLayoutManager = new
LinearLayoutManager(getActivity());
recyclerView.setLayoutManager(mLayoutManager);
recyclerView.setItemAnimator(new DefaultItemAnimator());
recyclerView.setAdapter(tutorAdapter);
getTutorData();
return myView;
}

关于java - Fragment 中的 RecyclerView – 如何从数组列表中检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48753723/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com