Recyclerview with Tablelayout On row click listner在android中不



嗨,在下面的代码中,我用表格布局实现了recyclerview。当点击表格行时,我已经编写了代码。但下面显示了一个错误

有人能帮我在哪里犯了错误吗

patientListAdapter=新的patientListAdapter(requireContext((,getRegisterPatientList,this(;recycler_view.setAdapter(patientListAdapter(//这个错误

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) {

}
});
}
});

@Overridepublic void mySelectItemListner(int i({

}

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

您的ActivityFragment(包含RecyclerView和适配器(没有实现PatientListAdapter.SelectIemClickListner,而是有一个View.OnClickListener实现。你应该在昏迷后添加SelectIemClickListner,实现所需的方法(mySelectIemListner(int i)(,然后尝试构建一个应用

它应该如何查找和Activity的一些示例

class CustomActivity : AppCompatActivity(),
View.OnClickListener, PatientListAdapter.SelectIemClickListner {
override fun mySelectIemListner(i: Integer) {
// on item click implementation
}
// rest of code

最新更新