Xamarin.android Xamarin Android:如何刷左循环查看项目

Xamarin.android Xamarin Android:如何刷左循环查看项目,xamarin.android,Xamarin.android,大家好我的名字是Taniguchi: 我有一个recyclerview,我想在xamarin android中滑动删除,但我只在java中找到文章 有人知道怎么用C#做吗 这篇java文章教你如何滑动删除 我的recylerview适配器: public class RecyclerAdapter : RecyclerView.Adapter, View.IOnClickListener, View.IOnLongClickListener { private View view;

大家好我的名字是Taniguchi:

我有一个recyclerview,我想在xamarin android中滑动删除,但我只在java中找到文章

有人知道怎么用C#做吗

这篇java文章教你如何滑动删除

我的recylerview适配器:

public class RecyclerAdapter : RecyclerView.Adapter, View.IOnClickListener, View.IOnLongClickListener
{
    private View view;
    private Boolean isSelected = false;

    public Boolean IsSelected()
    {
        return isSelected;
    }

    public void setSelected(Boolean selected)
    {

        isSelected = selected;
    }

    public static RecyclerView.Adapter mAdapter;
    public static bool isActionMode = true;
    private int viewType;
    private ViewGroup parent;
    public static bool unselect = false;
    private Activity mActivity;
    private MyActionMode mActionMode;
    private RecyclerView.ViewHolder holder;
    private List<time_entry> mTime_Entries;
    private Context context;
    private View p;
    private ActionMode mode;
    public static bool count = false;
    public static int CountAuxiliar = 0;
    private MyActionMode myActionMode;

    public event EventHandler<int> ItemClick;
    public RecyclerAdapter(List<time_entry> time_entries, Context context)
    {
        mTime_Entries = time_entries;
        this.context = context;
    }

    public RecyclerAdapter(List<time_entry> time_entries, Activity activity)
    {
        mTime_Entries = time_entries;
        mActivity = activity;
    }

    public RecyclerAdapter(List<time_entry> time_entries, MyActionMode myActionMode)
    {
        mTime_Entries = time_entries;
        this.myActionMode = myActionMode;
    }

    public class MyView : RecyclerView.ViewHolder
    {
        public View mMainView {get; set;}
        public TextView mName {get; set;}
        public TextView mSubject {get; set;}
        public TextView mMessage {get; set;}

        public MyView(View view) : base(view)
        {
            mMainView = view;
        }

    }


    public  override int ItemCount
    {
        get { return mTime_Entries.Count; }
    }

    public  override RecyclerView.ViewHolder OnCreateViewHolder(ViewGroup parent, int viewType)
    {
        LayoutInflater inflater = LayoutInflater.From(parent.Context);
        View row = LayoutInflater.From(parent.Context).Inflate(Resource.Layout.row, parent, false);
        RecyclerViewHolder vh = new RecyclerViewHolder(row);
        return vh;
    }

    public  override void OnBindViewHolder(RecyclerView.ViewHolder holder, int position)
    {

        RecyclerViewHolder myHolder = holder as RecyclerViewHolder;
        myHolder.cbx.Visibility = mTime_Entries[position].IsSelected() ? ViewStates.Visible : ViewStates.Gone;
        myHolder.cbx.Checked = mTime_Entries[position].IsSelected();


        myHolder.mProject_Task.Text = mTime_Entries[position].projectTask;
        myHolder.mDate.Text = mTime_Entries[position].date;
        myHolder.mDescription.Text = mTime_Entries[position].description;


        myHolder.ItemView.SetBackgroundColor(mTime_Entries[position].IsSelected() ? Color.LightBlue : Color.Transparent);
        myHolder.ItemView.Tag = position;
        myHolder.ItemView.SetOnClickListener(this);
        myHolder.ItemView.SetOnLongClickListener(this);

    }

    void View.IOnClickListener.OnClick(View v)
    {
        if (CountAuxiliar > 0)
        {
            int position = (int)v.Tag;
            mTime_Entries[position].setSelected(!mTime_Entries[position].IsSelected());
            v.SetBackgroundColor(mTime_Entries[position].IsSelected() ? Color.LightBlue : Color.Transparent);
            v.FindViewById(Resource.Id.checkBox1).Visibility = mTime_Entries[position].IsSelected() ? ViewStates.Visible : ViewStates.Invisible;
            if (mTime_Entries[position].IsSelected())
            {
                CountAuxiliar++;
            }
            else
            {
                CountAuxiliar--;
            }
            //mode.Title = CountAuxiliar.ToString() + " " + "Selecionados";
            MainActivity.title.Text = CountAuxiliar.ToString() + " " + "Selecionados";
            Toast.MakeText(v.Context, "Click : " + CountAuxiliar + "---" + position, ToastLength.Short).Show();
        }
        if (CountAuxiliar < 1 && count == true)
        {
            count = false;
            MainActivity.toolbar2.Visibility = ViewStates.Gone;
            MainActivity.bottomnavigationview1.Visibility = ViewStates.Gone;
            MainActivity.floatinactionbutton1.Visibility = ViewStates.Visible;
        }
    }
    public void removeSelection()
    {
        if (mTime_Entries != null)
        {
            foreach (time_entry email in mTime_Entries)
            {
                email.setSelected(false);

            }
        }
       NotifyDataSetChanged();
        CountAuxiliar = 0;
        count = false;
        MainActivity.bottomnavigationview1.Visibility = ViewStates.Gone;
        MainActivity.floatinactionbutton1.Visibility = ViewStates.Visible;

    }

    public void checkall()
    {
        if (mTime_Entries != null)
        {
            foreach (time_entry email in mTime_Entries)
            {
                email.setSelected(true);

            }
        }
        NotifyDataSetChanged();
        MainActivity.bottomnavigationview1.Visibility = ViewStates.Visible;
    }


    public bool OnLongClick(View v)
    {

        if (CountAuxiliar < 1)
        {
            CountAuxiliar = 1;
            count = true;
            int position = (int)v.Tag;
            mTime_Entries[position].setSelected(!mTime_Entries[position].IsSelected());
            v.SetBackgroundColor(mTime_Entries[position].IsSelected() ? Color.LightBlue : Color.Transparent);
            MainActivity.bottomnavigationview1.Visibility = ViewStates.Visible;
            MainActivity.floatinactionbutton1.Visibility = ViewStates.Gone;
            v.FindViewById(Resource.Id.checkBox1).Visibility = mTime_Entries[position].IsSelected() ? ViewStates.Visible : ViewStates.Invisible;
            MainActivity.title.Text = CountAuxiliar.ToString() + " " + "Selecionado";

            MainActivity.toolbar2.Visibility = ViewStates.Visible;
            count = true;

            Toast.MakeText(v.Context, "Long Click : " + mTime_Entries[position].IsSelected() + "---" + position, ToastLength.Short).Show();
        }
        return true;
    }
}
公共类RecyclerAdapter:RecyclerView.Adapter,View.IOnClickListener,View.IOnLongClickListener
{
私人视野;
私有布尔值isSelected=false;
公选
{
选举产生的回报;
}
已选择公共无效设置(已选择布尔值)
{
isSelected=已选择;
}
公共静态RecyclerView.AdapterMadapter;
公共静态bool isActionMode=true;
私有int视图类型;
私有视图组父级;
公共静态bool unselect=false;
私人活动能力;
私有MyActionMode mActionMode;
私人RecyclerView.ViewHolder;
私有列表mTime_条目;
私人语境;
私有视图p;
私人行动模式;
公共静态布尔计数=false;
公共静态int CountAuxiliar=0;
私有MyActionMode MyActionMode;
公共事件事件处理程序项单击;
公共RecyclerAdapter(列出时间项、上下文)
{
mTime\u条目=时间\u条目;
this.context=上下文;
}
公共回收适配器(列出时间\单位条目、活动)
{
mTime\u条目=时间\u条目;
活动性=活动性;
}
公共回收器适配器(列出时间\u项,MyActionMode MyActionMode)
{
mTime\u条目=时间\u条目;
this.myActionMode=myActionMode;
}
公共类MyView:RecyclerView.ViewHolder
{
公共视图mMainView{get;set;}
公共文本视图mName{get;set;}
公共文本视图mSubject{get;set;}
公共文本视图消息{get;set;}
公共MyView(视图):基本(视图)
{
mMainView=视图;
}
}
公共覆盖int ItemCount
{
获取{return mTime_Entries.Count;}
}
public override RecyclerView.ViewHolder OnCreateViewHolder(视图组父级,int-viewType)
{
LayoutInflater充气器=LayoutInflater.From(父上下文);
查看行=LayoutFlater.From(parent.Context).充气(Resource.Layout.row,parent,false);
RecyclerViewWholder vh=新的RecyclerViewWholder(世界其他地区);
返回vh;
}
公共覆盖无效OnBindViewHolder(RecyclerView.ViewHolder,int位置)
{
RecyclerViewHolder myHolder=作为RecyclerViewHolder的持有人;
myHolder.cbx.Visibility=mTime_条目[position].IsSelected()?ViewState.Visible:ViewState.Gone;
myHolder.cbx.Checked=mTime_条目[position].IsSelected();
myHolder.mProject\u Task.Text=mTime\u条目[位置].projectTask;
myHolder.mDate.Text=mTime\u条目[位置].日期;
myHolder.mDescription.Text=mTime\u条目[位置]。说明;
myHolder.ItemView.SetBackgroundColor(mTime_条目[position].IsSelected()?Color.LightBlue:Color.Transparent);
myHolder.ItemView.Tag=位置;
myHolder.ItemView.SetOnClickListener(this);
myHolder.ItemView.SetOnLongClickListener(这个);
}
void View.IOnClickListener.OnClick(视图v)
{
如果(CountAuxiliar>0)
{
int位置=(int)v.Tag;
mTime_条目[position].setSelected(!mTime_条目[position].IsSelected());
v、 SetBackgroundColor(mTime_条目[position].IsSelected()?Color.LightBlue:Color.Transparent);
v、 FindViewById(Resource.Id.checkBox1).Visibility=mTime\u条目[position].IsSelected()?ViewState.Visible:ViewState.Invisible;
if(mTime_条目[position].IsSelected())
{
CountAuxiliar++;
}
其他的
{
伯爵助理--;
}
//mode.Title=CountAuxiliar.ToString()+“”+“Selecionados”;
MainActivity.title.Text=CountAuxiliar.ToString()+“”+“Selecionados”;
Toast.MakeText(v.Context,“Click:+CountAuxiliar+”--“+position,ToastLength.Short).Show();
}
if(CountAuxiliar<1&&count==true)
{
计数=假;
MainActivity.toolbar2.Visibility=ViewStates.Gone;
MainActivity.bottomnavigationview1.Visibility=ViewState.Gone;
MainActivity.floatinactionbutton1.Visibility=视图状态.Visible;
}
}
公共选举
{
如果(mTime_条目!=null)
{
foreach(时间\输入邮件,以mTime\输入)
{
email.setSelected(false);
}
}
NotifyDataSetChanged();
CountAuxiliar=0;
计数=假;
MainActivity.bottomnavigationview1.Visibility=ViewState.Gone;
MainActivity.floatinactionbutton1.Visibility=视图状态.Visible;
}
公共void checkall()
{
如果(mTime_条目!=null)
{
foreach(时间\输入邮件,以mTime\输入)
{
email.setSelected(true);
}
}
NotifyDataSetChanged();
MainActivity.bottomnavigationview1.Visibility=ViewState.Visible;
}
公共bool onlonglick(视图五)
{
if(CountAuxiliar<1)
{
CountAuxiliar=1;
计数=真;
int位置=(int)v.Tag;
mTime_条目[position].setSelected(!mTime_条目[position].IsSelected());
v、 SetBackgroundColor(mTime_条目[position].IsSelected()?Color.LightBlue:Color.Transparent);
MainActivity.bottomnavigationview1.Visibility=ViewState.Visible;
MainActivity.floatinactionbutton1.Visibility=ViewStates.Gone;
v、 FindViewById(Resource.Id.checkBox1).Visibility=mTime\u条目[位置]
public class SwipeToDeleteCallback : ItemTouchHelper.SimpleCallback
{
    private Context context;
    private PhotoAlbumAdapter madapter;
    private Android.Graphics.Drawables.Drawable deleteIcon;
    private int intrinsicWidth;
    private int intrinsicHeight;
    private Android.Graphics.Drawables.ColorDrawable background;
    private Color backgroundColor;
    private Paint clearPaint;

    public SwipeToDeleteCallback(int dragDirs, int swipeDirs, Context context) : base(dragDirs, swipeDirs )
    {
        this.context = context;
        deleteIcon = ContextCompat.GetDrawable(context, Resource.Drawable.alter_delete);
        intrinsicWidth = deleteIcon.IntrinsicWidth;
        intrinsicHeight = deleteIcon.IntrinsicHeight;
        background = new Android.Graphics.Drawables.ColorDrawable();
        backgroundColor = Color.ParseColor("#f44336");
        clearPaint = new Paint();
        clearPaint.SetXfermode(new PorterDuffXfermode(PorterDuff.Mode.Clear));
    }

    public SwipeToDeleteCallback(int dragDirs, int swipeDirs, Context context, PhotoAlbumAdapter mRecyclerView) : this(dragDirs, swipeDirs, context)
    {
        this.context = context;
        this.madapter = mRecyclerView;
        deleteIcon = ContextCompat.GetDrawable(context, Resource.Drawable.delete);
        intrinsicWidth = deleteIcon.IntrinsicWidth;
        intrinsicHeight = deleteIcon.IntrinsicHeight;
        background = new Android.Graphics.Drawables.ColorDrawable();
        backgroundColor = Color.ParseColor("#f44336");
        clearPaint = new Paint();
        clearPaint.SetXfermode(new PorterDuffXfermode(PorterDuff.Mode.Clear));
    }

    public override int GetMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder)
    {
        if(viewHolder.AdapterPosition == 10)
        {
            return 0;
        }
        return base.GetMovementFlags(recyclerView, viewHolder);
    }

    public override void OnChildDraw(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, bool isCurrentlyActive)
    {
        base.OnChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive);
    }

    public override bool OnMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target)
    {
        //throw new NotImplementedException();
        return false;
    }

    public override void OnChildDrawOver(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, bool isCurrentlyActive)
    {
        var itemView = viewHolder.ItemView;
        var itemHeight = itemView.Bottom - itemView.Top;
        var isCanceled = dX == 0f && !isCurrentlyActive;

        if (isCanceled)
        {
            clearCanvas(c, itemView.Right + dX, (float)itemView.Top, (float)itemView.Right, (float)itemView.Bottom);
            base.OnChildDrawOver(c, recyclerView
                , viewHolder, dX, dY, actionState, isCurrentlyActive);
            return;
        }
        background.Color = backgroundColor;
        background.SetBounds(itemView.Right + (int)dX, itemView.Top, itemView.Right, itemView.Bottom);
        background.Draw(c);

        var deleteIconTop = itemView.Top + (itemHeight - intrinsicHeight) / 2;
        var deleteIconMargin = (itemHeight - intrinsicHeight) / 2;
        var deleteIconLeft = itemView.Right - deleteIconMargin - intrinsicWidth;
        var deleteIconRight = itemView.Right - deleteIconMargin;
        var deleteIconBottom = deleteIconTop + intrinsicHeight;

        deleteIcon.SetBounds(deleteIconLeft, deleteIconTop, deleteIconRight, deleteIconBottom);
        deleteIcon.Draw(c);

        base.OnChildDrawOver(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive);
    }

    private void clearCanvas(Canvas c, float v, float top, float right, float bottom)
    {
        c.DrawRect(v, top, right, bottom, clearPaint);
    }

    public override void OnSwiped(RecyclerView.ViewHolder viewHolder, int direction)
    {
        //Invoke Removing Item method from adapter
        this.madapter.RemoveItem(viewHolder.AdapterPosition);
    }

    public override void ClearView(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder)
    {
        base.ClearView(recyclerView, viewHolder);
    }
}
 var swipeHandler = new SwipeToDeleteCallback(0, ItemTouchHelper.Left, this, mAdapter);
 var itemTouchHelper = new ItemTouchHelper(swipeHandler);
 itemTouchHelper.AttachToRecyclerView(mRecyclerView);
public void RemoveItem (int position)
{
    ArrayList al = new ArrayList(mPhotoAlbum.mPhotos);
    al.RemoveAt(position);
    mPhotoAlbum.mPhotos = (Photo[])al.ToArray(typeof(Photo));
    NotifyDataSetChanged();
    NotifyItemChanged(position);
}
public void RemoveItem(int position)
{
    mTime_Entries.RemoveAt(position);
    NotifyDataSetChanged();
    NotifyItemChanged(position);
}
  private RecyclerAdapter mdapter;

  public SwipeToDeleteCallback(int dragDirs, int swipeDirs, Context context, PhotoAlbumAdapter mRecyclerView) : this(dragDirs, swipeDirs, context)
{
    this.context = context;
    this.madapter = mRecyclerView;
    deleteIcon = ContextCompat.GetDrawable(context, Resource.Drawable.delete);
    intrinsicWidth = deleteIcon.IntrinsicWidth;
    intrinsicHeight = deleteIcon.IntrinsicHeight;
    background = new Android.Graphics.Drawables.ColorDrawable();
    backgroundColor = Color.ParseColor("#f44336");
    clearPaint = new Paint();
    clearPaint.SetXfermode(new PorterDuffXfermode(PorterDuff.Mode.Clear));
}
public override void OnSwiped(RecyclerView.ViewHolder viewHolder, int direction)
{
    //Invoke Removing Item method from 
    this.mdapter.RemoveItem(viewHolder.AdapterPosition);
}