Recyclerview in my app is not working.
(我的应用程序中的Recyclerview无法正常工作。)
Fragment is giving me this error but I couldn't figure it out. (片段给了我这个错误,但我无法弄清楚。)
I know that there are lots of questions about this issue but none of them solved my problem so far.
(我知道关于这个问题有很多问题,但是到目前为止,没有一个问题解决了我的问题。)
Fragment Code:
(片段代码:)
public class PatientsFragment extends Fragment {
private FragmentActivity myContext;
ClinicViewModel clinicViewModel;
@Override
public void onAttach(Activity activity) {
myContext = (FragmentActivity) activity;
super.onAttach(activity);
}
public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.fragment_patients, container, false);
FloatingActionButton fab = root.findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// -> Dodawanie nowego pacjenta
FrameLayout host = getView().findViewById(R.id.nav_host_fragment);
//host.removeAllViews();
AddPatientFragment addPatientFragment = new AddPatientFragment();
FragmentManager fm = myContext.getSupportFragmentManager();
fm.beginTransaction()
.replace(R.id.nav_host_fragment, addPatientFragment)
.addToBackStack(null)
.commit();
}
});
View rootView = inflater.inflate(R.layout.fragment_patients, container, false);
RecyclerView recyclerView = (RecyclerView) rootView.findViewById(R.id.recyclerViewPatients);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
recyclerView.setHasFixedSize(true);
final PatientsAdapter adapter = new PatientsAdapter();
recyclerView.setAdapter(adapter);
clinicViewModel = ViewModelProviders.of(this).get(ClinicViewModel.class);
clinicViewModel.getAllPatients().observe(this, new Observer<List<Patient>>() {
@Override
public void onChanged(List<Patient> patients) {
//update Recycler todo
Toast.makeText(getContext(), "onChanged", Toast.LENGTH_SHORT).show();
adapter.setPatients(patients);
}
});
return root;
}
and an Adapter
(和一个适配器)
private List<Patient> patients = new ArrayList<>();
@NonNull
@Override
public PatientHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.patient_item, parent, false);
return new PatientHolder(itemView);
}
@Override
public void onBindViewHolder(@NonNull PatientHolder holder, int position) {
Patient currentPatient = patients.get(position);
holder.textViewPersonName.setText(currentPatient.getFirstName() + " " + currentPatient.getLastName());
}
@Override
public int getItemCount() {
return patients.size();
}
public void setPatients(List<Patient> patients){
this.patients = patients;
notifyDataSetChanged();
}
class PatientHolder extends RecyclerView.ViewHolder {
private TextView textViewPersonName;
public PatientHolder(@NonNull View itemView) {
super(itemView);
textViewPersonName = itemView.findViewById(R.id.textViewPersonName);
}
}
}
Like i said before, I can't see anything wrong with this code :( Thanks in advance!
(就像我之前说过的,我看不到这段代码有什么问题:(预先感谢!)
ask by domvnski translate from so 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…