为什么我无法从我的活动中调用适配器方法



>我已经在我的适配器类中定义了一个方法 removeItem,我正在尝试从我的活动中调用该方法,但是当我将点运算符与适配器类引用一起使用时,它无法识别我的方法。请在这里帮助我。

public class RecyclerViewCalendarAdapter extends RecyclerView.Adapter<RecyclerViewCalendarAdapter.ViewHolder> {
List<EventDetails_Helper> list;
String startdate,enddate;
List<Date> dates;
MaterialCalendarView calendar_view;
AppBarLayout appbar_calendar;

RecyclerViewCalendarAdapter(List<EventDetails_Helper> list, MaterialCalendarView calendar_view, AppBarLayout appbar_calendar){
    this.list = list;
    this.calendar_view = calendar_view;
    this.appbar_calendar = appbar_calendar;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.recyclerviewcalendar_item, parent, false);
    ViewHolder vh = new ViewHolder(v);
    return vh;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
    holder.txtview_eventname.setText(list.get(position).name);
    holder.txtview_enddate.setText(list.get(position).target_date);
    holder.linearlayout_calendar.setTag(R.id.startdate,"2018-02-17");
    holder.linearlayout_calendar.setTag(R.id.enddate,list.get(position).target_date);

    holder.linearlayout_calendar.setOnClickListener(new CalendarLinearListener());
}
@Override
public int getItemCount() {
    return list.size();
}
public void removeItem(int position) {
    list.remove(position);
    notifyItemRemoved(position);
}
public void restoreItem(EventDetails_Helper item, int position) {
    list.add(position, item);
    // notify item added by position
    notifyItemInserted(position);
}
    public class ViewHolder extends RecyclerView.ViewHolder{
    TextView txtview_eventname,txtview_enddate,txtview_startdate;
    LinearLayout linearlayout_calendar;
    public RelativeLayout viewBackground, viewForeground;

    public ViewHolder(View itemView) {
        super(itemView);
        linearlayout_calendar = (LinearLayout) itemView.findViewById(R.id.linearlayout_calendar);
        txtview_eventname = (TextView) itemView.findViewById(R.id.txtview_eventname);
        txtview_startdate = (TextView) itemView.findViewById(R.id.txtview_startdate);
        txtview_enddate = (TextView) itemView.findViewById(R.id.txtview_enddate);
        viewBackground = itemView.findViewById(R.id.view_background);
        viewForeground = itemView.findViewById(R.id.view_foreground);
    }
}
private class CalendarLinearListener implements View.OnClickListener {
    @Override
    public void onClick(View v) {
        appbar_calendar.setExpanded(true);
        calendar_view.clearSelection();
        startdate = (String) v.getTag(R.id.startdate);
        enddate = (String) v.getTag(R.id.enddate);
        dates = getDates(startdate,enddate);
        datemarkstyle(dates);
    }
}
private static List<Date> getDates(String dateString1, String dateString2)
{
    ArrayList<Date> dates = new ArrayList<Date>();
    DateFormat df1 = new SimpleDateFormat("yyyy-MM-dd");
    Date date1 = null;
    Date date2 = null;
    try {
        date1 = df1 .parse(dateString1);
        date2 = df1 .parse(dateString2);
    }
    catch (Exception e) {
        e.printStackTrace();
    }
    Calendar cal1 = Calendar.getInstance();
    cal1.setTime(date1);

    Calendar cal2 = Calendar.getInstance();
    cal2.setTime(date2);
    while(!cal1.after(cal2))
    {
        dates.add(cal1.getTime());
        cal1.add(Calendar.DATE, 1);
    }
    return dates;
}
private void datemarkstyle(List<Date> dates) {
    try{
        calendar_view.setCurrentDate(dates.get(0));
        int i;
        int year,month,day;
        for(i=0;i<dates.size();i++){
            calendar_view.setDateSelected(dates.get(i),true);
        }
    }catch(Exception e){
        e.printStackTrace();
    }
}}

在我的活动中,我正在执行以下操作:-

        @Override
    public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction, int position) {
        if(viewHolder instanceof RecyclerViewCalendarAdapter.ViewHolder){
            String name = list.get(viewHolder.getAdapterPosition()).name;
            EventDetails_Helper deleteditem = list.get(viewHolder.getAdapterPosition());
            int deleteIndex = viewHolder.getAdapterPosition();
            mAdapter.removeItem
        }
    }

但问题是它不允许我访问方法 removeItem((;

我想你已经宣布你的mAdapterRecyclerView.Adapter 不如RecyclerViewCalendarAdapter

更改它

使用这个

RecyclerViewCalendarAdapter mAdapter;

而不是

RecyclerView.Adapter mAdapter;

比你可以像这样使用mAdapter.removeItem(deleteIndex);

我不知道这是

你的罪税在这里还是在项目中,但是

mAdapter.removeItem 

不正确

应该是

 mAdapter.removeItem(position);


mAdapter.removeItem(deleteIndex);

并确保使用RecyclerViewCalendarAdapter实例

最新更新