【发布时间】:2023-03-19 07:57:01
【问题描述】:
大家好,我叫谷口:
我有一个 recyclerview,我希望在 xamarin android 中滑动到删除,但我只能在 java 中找到文章
有谁知道如何在 C# 中做到这一点?
教如何滑动删除的java文章。
https://medium.com/@zackcosborn/step-by-step-recyclerview-swipe-to-delete-and-undo-7bbae1fce27e
我的 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;
}
}
【问题讨论】:
标签: xamarin.android