简体   繁体   English

Recyclerview with Tablelayout On row click listner not working in android

[英]Recyclerview with Tablelayout On row click listner not working in android

Hi in the below code I was implemented recyclerview with tablelayout.when On click of the table row I have written my code.But below this is showing an error嗨,在下面的代码中,我使用 tablelayout 实现了 recyclerview。单击表格行时,我已经编写了代码。但下面显示错误

Can any one help me where I did the mistake谁能帮我在哪里做错了

patientListAdapter = new PatientListAdapter(requireContext(),getRegisterdPatientList,this); patientListAdapter = new PatientListAdapter(requireContext(),getRegisterdPatientList,this); recycler_view.setAdapter(patientListAdapter);//error at this recycler_view.setAdapter(patientListAdapter);//此时出错

java: popup: java:弹出:

public class DateTimeCoordinator extends Fragment implements PatientListCoordinatorAdapter.SelectItemClickListner {

     patient_details.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    LayoutInflater layoutInflater = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                    final View customView = layoutInflater.inflate(R.layout.popup_patientlist,null);
                    recycler_view=customView.findViewById(R.id.recycler_view);
                    search=customView.findViewById(R.id.search);
                    popupWindow = new PopupWindow(customView,
                            LinearLayout.LayoutParams.MATCH_PARENT,
                            LinearLayout.LayoutParams.WRAP_CONTENT,
                            true);
                    popupWindow.setTouchable(true);
                    popupWindow.setBackgroundDrawable(new ColorDrawable(
                            android.graphics.Color.TRANSPARENT));
                    popupWindow.showAtLocation(customView, Gravity.CENTER ,0, 0);
                    popupWindow.setTouchInterceptor(new View.OnTouchListener() {
                        @Override
                        public boolean onTouch(View v, MotionEvent event) {
                            return false;
                        }
                    });
                    getRegisteredPatientListpopup();
                    recycler_view.setHasFixedSize(true);
                    recycler_view.setLayoutManager(new LinearLayoutManager(getContext()));
                    getRegisterdPatientList = new ArrayList<>();
                    patientListAdapter = new PatientListCoordinatorAdapter(requireContext(), getRegisterdPatientList,get);
                    recycler_view.setAdapter(patientListAdapter);
    
                    search.addTextChangedListener(new TextWatcher() {
                        @Override
                        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    
                        }
    
                        @Override
                        public void onTextChanged(CharSequence s, int start, int before, int count) {
                            patientListAdapter.getFilter().filter(s);
    
                        }
    
                        @Override
                        public void afterTextChanged(Editable s) {
    
                        }
                    });
                }
            });

@Override public void mySelectItemListner(int i) { @Override public void mySelectItemListner(int i) {

}

Adapter.java:适配器.java:

public class PatientListCoordinatorAdapter extends RecyclerView.Adapter<PatientListCoordinatorAdapter.MyViewHolder> implements Filterable {

    Context context;
    ArrayList<GetRegisterdPatientListData> getRegisterdPatientListDataArrayList;
    private ArrayList<GetRegisterdPatientListData> mFilteredList;
    private PatientListCoordinatorAdapter.SelectItemClickListner selectItemClickListner;
    public PatientListCoordinatorAdapter(Context context, ArrayList<GetRegisterdPatientListData> getRegisterdPatientListDataArrayList,PatientListCoordinatorAdapter.SelectItemClickListner selectItemClickListner){
        this.context=context;
        this.getRegisterdPatientListDataArrayList=getRegisterdPatientListDataArrayList;
        mFilteredList=getRegisterdPatientListDataArrayList;
        this.selectItemClickListner=selectItemClickListner;
    }



    @Override
    public PatientListCoordinatorAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        Context context = parent.getContext();
        LayoutInflater inflater = LayoutInflater.from(context);
        View view = inflater.inflate(R.layout.table_patientlist, parent, false);
        PatientListCoordinatorAdapter.MyViewHolder holder = new PatientListCoordinatorAdapter.MyViewHolder(view);
        return holder;
    }

    @Override
    public void onBindViewHolder(@NonNull PatientListCoordinatorAdapter.MyViewHolder holder, final int i) {



        if(mFilteredList!=null &&mFilteredList.size()>0){
            GetRegisterdPatientListData model=mFilteredList.get(i);
            holder.name.setText(model.getFName()+" "+model.getLName());
            holder.reg_no.setText(model.getRegistrationNo());
            holder.mobile_no.setText(model.getMobile());


                    selectItemClickListner.mySelectItemListner(i);



        }else {
            return;
        }

    }

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

    @Override
    public Filter getFilter() {

        return new Filter() {
            @Override
            protected FilterResults performFiltering(CharSequence charSequence) {

                String charString = charSequence.toString();

                if (charString.isEmpty()) {

                    mFilteredList = getRegisterdPatientListDataArrayList;
                } else {

                    ArrayList<GetRegisterdPatientListData> filteredList = new ArrayList<>();

                    for (GetRegisterdPatientListData androidVersion : getRegisterdPatientListDataArrayList) {

                        if (androidVersion.getFName().toLowerCase().contains(charString)||androidVersion.getLName().toLowerCase().contains(charString)||androidVersion.getRegistrationNo().toLowerCase().contains(charString)
                                ||androidVersion.getMobile().toLowerCase().contains(charString)) {
                            filteredList.add(androidVersion);
                        }
                    }

                    mFilteredList = filteredList;
                }
                FilterResults filterResults = new FilterResults();
                filterResults.values = mFilteredList;
                return filterResults;
            }

            @Override
            protected void publishResults(CharSequence charSequence, FilterResults filterResults) {
                mFilteredList = (ArrayList<GetRegisterdPatientListData>) filterResults.values;
                notifyDataSetChanged();
            }
        };
    }



    public class MyViewHolder extends RecyclerView.ViewHolder {

        TextView name,reg_no,mobile_no,book_appointment;

        public MyViewHolder(@NonNull View itemView) {
            super(itemView);
            book_appointment=itemView.findViewById(R.id.book_appointment);
            name=itemView.findViewById(R.id.name);
            reg_no=itemView.findViewById(R.id.reg_no);
            mobile_no=itemView.findViewById(R.id.mobile_num);
        }

    }
    public interface SelectItemClickListner{
        void mySelectItemListner(int i);
    }
}

your Activity or Fragment (which holds RecyclerView and adapter) isn't implementing PatientListAdapter.SelectIemClickListner , instead there is an View.OnClickListener implementation.您的ActivityFragment (包含RecyclerView和适配器)没有实现PatientListAdapter.SelectIemClickListner ,而是有一个View.OnClickListener实现。 you should add SelectIemClickListner after coma, implement needed method ( mySelectIemListner(int i) ) and then try to build an app您应该在昏迷后添加SelectIemClickListner ,实现所需的方法( mySelectIemListner(int i) ),然后尝试构建应用程序

some sample how it should look for and Activity一些示例它应该如何查找和Activity

class CustomActivity : AppCompatActivity(),
    View.OnClickListener, PatientListAdapter.SelectIemClickListner {

    override fun mySelectIemListner(i: Integer) {
        // on item click implementation
    }

    // rest of code

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM