未连接适配器;在Fragment,RecyclerView中跳过布局

时间:2019-12-01 12:44:55

标签: android android-fragments android-recyclerview

我的应用程序中的Recyclerview无法正常工作。 片段给了我这个错误,但我无法弄清楚。

我知道关于这个问题有很多问题,但是到目前为止,没有一个问题可以解决我的问题。

片段代码:

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;
    } 

和适配器

    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);
        }
    }

}

就像我之前说过的,我看不到这段代码有什么问题:( 预先感谢!

1 个答案:

答案 0 :(得分:0)

尝试使用def reverse_int(): num=(input("Enter a 3-digit number: ")) for number in num: print (num[::-1]) reverse_int() 代替root,如下所示:

rootView